当我在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派生的匿名类'必须声明为抽象,或在'ConnectionListener'中实现抽象方法'onConnect()'”。显然,我正在其下面实现这些方法,而Netbeans能够追赶。我的其他两个错误是在Override注释上,它们是“ Method不会从其超类重写method”。
就像Android Studio不能像Netbeans那样解释我的代码。
问题最终与以下事实有关:当我将代码移到Android Studio时,程序包发生了变化,突然之间我无法实现非公共方法。
这就解释了为什么我得到的方法没有被覆盖错误,因为默认可见性方法没有被覆盖,因为我的打包代码看不到它们。
我对这个问题的解决方案是将ConnectionListener的方法公开,以便可以从包中访问它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句