Java Android Studio不识别匿名类吗?

Java Android Studio不识别匿名类吗?,java,android,netbeans,android-studio,anonymous-class,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()

当我在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()
),我得到“Class‘从ConnectionListener派生的匿名类’必须声明为抽象的,或者在‘ConnectionListener’中实现抽象方法‘onConnect()’。显然,我正在它下面实现这些方法,Netbeans能够理解。我的另外两个错误是覆盖注释,它们是“方法不从其超类覆盖方法”


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

问题最终与这样一个事实有关:当我将代码移到Android Studio时,包发生了变化,突然我无法实现非公共方法

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


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

Android Studio是否从正确的包中导入
ConnectionListener
?是的,这是我自己的
ConnectionListener
导入com.coolkev.lightmate.ConnectionListener;
尝试重新启动,可以吗在您的
ConnectionListener
包中,有时会发生一些AS故障,即
onConnect()
public?如果是这样,那么在重写时将其公开。Java不允许您降低重写方法的可访问性,而且我认为匿名类的规则没有什么不同。如果ConnectionListener是一个接口,默认情况下,它的方法是
public
(实际上总是
public
——你不能让他们做任何其他事情)。所以你必须在重写时让他们公开。