为什么我不能以正常方式调用已实现的接口方法?

时间:2019-05-04 13:51:50

标签: java android

假设有一个接口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()是在无法访问的类或接口中定义的,关于出什么问题的任何想法?

2 个答案:

答案 0 :(得分:0)

是否涉及任何包裹?您的示例中的接口以默认可见性声明(即,该接口仅在其自己的程序包中可见),并且Apublic。如果XB位于不同的包中,则该界面不可见。因此,您应该将界面标记为public

答案 1 :(得分:0)

我通过在calss A中添加一种方法解决了这个问题:

public void dobb() {
    B1.bb();
}

然后在我的X班级中调用它,就可以了!