我认为您可以创建一个定义此方法的接口。这样,您的类将覆盖该方法,并且不应该有任何警告。
来自XML.java:
public @interface FromXML {
}
我的接口.java:
public interface MyInterface {
@FromXML
public void onSomethingClick(View v);
}
MyClass.java
public MyClass implements MyInterface {
@Override
@FromXML
public void onSomethingClick(View v){
}
}
编辑:另一个解决方案可能是将您的方法定义为抽象的。事实上,据我了解您的代码,您的方法只是声明(实现在 XML 文件中)。因此,您的问题与其说是 IDE 问题,不如说是设计问题(您的 IDE 对警告来说是正确的)。现实情况是您的方法是抽象的并且在其他地方定义。
因此,将您的方法定义为抽象将解决问题,但您必须使类抽象:
public abstract class MyClassUsingOnSomethingClick {
/*
* All the class implementation can be here as the normal class.
*/
@FromXML
public abstract void onSomethingClick(View v);
}
我知道您会说此解决方案无法轻松创建对象,但您将有两个解决方案:
1 - 内联创建您的对象:
MyClassUsingOnSomethingClick a = new MyClassUsingOnSomethingClick() {
@Override
@FromXML
public void onSomethingClick(View v) {}
};
2 - 在您的摘要中创建一个工厂方法MyClassUsingOnSomethingClick
:
public static final MyClassUsingOnSomethingClick createEmptyMyClassUsingOnSomethingClick() {
return new MyClassUsingOnSomethingClick() {
@Override
@FromXML
public void onSomethingClick(View v) {}
};
}
// and then, create with: :
MyClassUsingOnSomethingClick a = MyClassUsingOnSomethingClick.createEmptyMyClassUsingOnSomethingClick();
即使我知道您更喜欢更快的解决方案,我相信这个解决方案是最干净的,因为:
- 它尊重面向对象的编程哲学。
- 它不是特定于 IDE。
- 它避免了注释处理工具(我认为应该非常明智地使用它)