Java问题求助:如何通过类A实例化其静态内部类C?
问题解决:实例化Java静态内部类C
首先明确:静态内部类不属于外部类的实例,外部访问时必须通过外部类名.静态内部类名的方式引用,不能直接使用内部类名。
你的写法存在两个语法错误:
- 实例化B时,不能直接写
new B(),B是A的静态内部类,外部必须用A.B限定; - 实例化对象时不需要写参数名,
new B b是错误语法,正确实例化B的写法是new A.B()。
正确代码替换方案
将[???]替换为new A.C(new A.B()),完整main方法如下:
public static void main(String [] arg){ assert (new A.C(new A.B()).foo()==42); }
简化写法(可选)
如果觉得重复写A.麻烦,可以在类顶部导入静态内部类:
import static A.B; import static A.C;
此时main方法可简化为:
public static void main(String [] arg){ assert (new C(new B()).foo()==42); }
内容的提问来源于stack exchange,提问作者acidic231
相关产品推荐
相关产品推荐

