Cody
Cody

Reputation: 2491

Using @SuppressWarnings("unused") annotation on declaration section

I have a basic question relating to the @SuppressWarnings("unused") annotation. Basically, I would like to suppress unused warnings on a block of code in my declarations section of my class. I would prefer not to suppress unused warnings on the entire class.

Currently, I am doing this:

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;
    ....

I find the above code to be a bit messy with the annotations thrown in randomly like that. What I would like to do is something like:

//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;
....

This is, of course, illegal in Java as a block cannot be simply made like this. Its not a huge deal or anything, but I am curious if I am missing an obvious and elegant solution.

Upvotes: 2

Views: 6985

Answers (1)

Chirlo
Chirlo

Reputation: 6132

If you reeeeealy want to keep all those unused constants, a quick and dirty trick would be;

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";     
   }
}

And i would make them static too, but your call.

EDIT: Or, what i think is much nicer:

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;
        }
    }
}    

This way you don't get the unused warning as long as you use at least one of the values.

Upvotes: 6

Related Questions