2

@SuppressWarnings("unused")注釈に関する基本的な質問があります。基本的に、クラスの宣言セクションにあるコードブロックの未使用の警告を抑制したいと思います。クラス全体で未使用の警告を抑制したくない。

現在、私はこれを行っています:

public class MyClass {
    //Constants
    private final String ACCEPT = "Yes";
    @SuppressWarnings("unused")
    private final String DENY = "No";            //Not currently used
    private final String TENTATIVE = "Maybe";
    @SuppressWarnings("unused")
    private final String POSTPONE = "Later";     //Not currently used

    //Variables
    private int counter;
    ....

上記のコードは、そのようにランダムにスローされたアノテーションで少し厄介だと思います。私がやりたいことは次のようなものです:

//Constants
@SuppressWarnings("unused")
{
  private final String ACCEPT = "Yes";
  private final String DENY = "No";            //Not currently used
  private final String TENTATIVE = "Maybe";
  private final String POSTPONE = "Later";     //Not currently used
}

//Variables
private int counter;
....

もちろん、これはJavaでは違法です。ブロックをこのように単純に作成することはできないからです。それは大したことではありませんが、明白でエレガントな解決策が欠けているかどうか興味があります。

4

1 に答える 1

6

これらの未使用の定数をすべて保持したい場合は、次のような手っ取り早いトリックがあります。

public class MyClass {
//Variables
    private int counter;

@SuppressWarnings("unused")
    private static final class UnusedConstants{
        private final String ACCEPT = "Yes";
        private final String DENY = "No";            
        private final String TENTATIVE = "Maybe";
        private final String POSTPONE = "Later";     
   }
}

そして、私もそれらを静的にしますが、あなたの呼び出し。

編集:または、私が思うのはもっといいです:

public class MyClass {

    private enum Answer {

        ACCEPT ("Yes"),
        DENY ("No"),
        TENTATIVE("Maybe"),
        POSTPONE("Later");

        private final String answer;

        private Answer(String answer) {
        this.answer = answer;
        }

        public String toString() {
            return answer;
        }
    }
}    

このようにして、少なくとも 1 つの値を使用する限り、未使用の警告は表示されません。

于 2012-09-28T19:12:43.290 に答える