假设有一个接口B和一个类A:
interface B {
void bb ();
}
public class A {
...
public B B1 = new B() {
@override
public void bb() {
...
}
private void bbb(){ //this looks weird but compiler is ok on it.
...
}
};
}
我需要在类X中调用在A中实现的bb(),所以我这样做了:
public class X {
private A a = new A();
a.B1.bb();
}
但是在a.B1.bb()中;编译器说bb()是在无法访问的类或接口中定义的,关于出什么问题的任何想法?
答案 0 :(得分:0)
是否涉及任何包裹?您的示例中的接口以默认可见性声明(即,该接口仅在其自己的程序包中可见),并且A
为public
。如果X
与B
位于不同的包中,则该界面不可见。因此,您应该将界面标记为public
。
答案 1 :(得分:0)
我通过在calss A中添加一种方法解决了这个问题:
public void dobb() {
B1.bb();
}
然后在我的X班级中调用它,就可以了!