当我在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那样解释我的代码。
答案 0 :(得分:0)
问题最终与以下事实有关:当我将代码移到Android Studio时,软件包发生了变化,突然间我无法实现非公开方法。
这解释了为什么我得到的方法没有被覆盖错误,因为默认可见性方法没有被覆盖,因为我的包装代码不可见。
我对此问题的解决方案是将ConnectionListener的方法设为公共,因此可以从包中访问它们。