Android Studio无法识别匿名类吗?

时间:2015-04-18 03:17:14

标签: java android netbeans android-studio anonymous-class

当我在Netbeans中编写以下代码时(我正在测试我的LightMateConnection类),它编译并运行时没有错误。

public class Main {
    public static void main(String[] args){
        final LightMateConnection a = new LightMateConnection();
        a.addConnectionListener(new ConnectionListener()
        {
            @Override
            void onConnect(){
                //Do Stuff
            }
            @Override
            void onDisconnect(){
                //Do Stuff
            }
        });
    }
}

因为它适用于Netbeans,我想当我转移到Android Studio时,几乎相同的代码仍然有效。我在下面创建了构造函数:

public MainActivity(){ //Note that this is a constructor, not a class
    super();

    LightMateConnection lmc = new LightMateConnection();
    lmc.addConnectionListener(new ConnectionListener()
    {
        @Override
        void onConnect(){
            //Do Stuff
        }
        @Override
        void onDisconnect(){
            //Do Stuff
        }
    });
}

Android Studio给了我3个错误。在第4行,其中有...(new ConnectionListener(),我得到“从ConnectionListener派生的类'匿名类'必须被声明为abstract或在'ConnectionListener'中实现抽象方法'onConnect()'”。显然我正在它下面实现那些方法,Netbeans能够流行起来。我的另外两个错误是在覆盖注释上,它们是“方法不会覆盖其超类中的方法”。

就像Android Studio不像Netbeans那样解释我的代码。

1 个答案:

答案 0 :(得分:0)

问题最终与以下事实有关:当我将代码移到Android Studio时,软件包发生了变化,突然间我无法实现非公开方法。

这解释了为什么我得到的方法没有被覆盖错误,因为默认可见性方法没有被覆盖,因为我的包装代码不可见。

我对此问题的解决方案是将ConnectionListener的方法设为公共,因此可以从包中访问它们。