假设我有一些嵌套类
class A{
private static class B{}
static class C{
B b;
C(B b){
this.b=b;
}
int foo(){
return 42;
}
}
}
我试图通过执行以下操作来实例化私有静态类B
new A.C(new A.B())
但由于B是私人的,我无法做到这一点。 用B类构造C类的方法是什么?
答案 0 :(得分:3)
您可以B
非私密,也可以在A
中提供辅助方法来创建C
:
class A{
private static class B{}
static class C{
B b;
C(B b){
this.b=b;
}
int foo(){
return 42;
}
}
static createC() {
return new C(new B());
}
}
因此,在A
之外,您可以像这样创建C
的实例:
A.C myc = A.create();
请注意,由于B
在外部不可见,因此C
的构造函数无用,因此您可以将其设为私有。
答案 1 :(得分:-2)
如果您只是想进行测试并绕过断言错误,那么您可以使用 b 的空值实例化 c,然后创建一个匿名类并覆盖 foo。
new A.C(null){int foo(){return 42;}}