このメソッドを定義するインターフェースを作成できると思います。そうすれば、クラスはメソッドをオーバーライドし、警告は表示されないはずです。
FromXML.java:
public @interface FromXML {
}
MyInterface.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);
}
このソリューションではオブジェクトを簡単に作成できないとおっしゃるでしょうが、次の2つのソリューションがあります。
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に固有のものではありません。
- 注釈処理ツールを回避します(私の意見では、これは非常に賢明に使用する必要があります)