Android Studio 是否无法识别匿名 类?

Does Android Studio not recognize anonymous classes?

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

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() 的地方,我得到 "Class 'Anonymous class derived from ConnectionListener' must either be declared abstract or implement abstract method 'onConnect()' in 'ConnectionListener'"。显然,我在它的正下方实现了这些方法,Netbeans 得以流行起来。我的另外两个错误在 Override 注释上,它们是 "Method does not override method from its superclass".

好像 Android Studio 没有像 Netbeans 那样解释我的代码。

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

这解释了为什么我收到方法未覆盖错误,因为默认可见性方法没有被覆盖,因为它们在我的包外代码中不可见。

我解决这个问题的方法是制作 ConnectionListener 的方法 public,这样它们就可以在包外访问。