Sinn der SuppressWarnings("unused")-Annotation

Fant

Bekanntes Mitglied
Hallo zusammen,

ich habe in meinem Kopf gerade irgendwie ein paar Schwierigkeiten mit der @SuppressWarnings-Annotation. Als konkretes Beispiel mache ich mir gerade über den Fall "unused" Gedanken. Es heißt:

SuppressWarnings("unused") is used for suppressing warnings relative to (1) local variables never read, (2) parameters never read, (3) unused imports, (4) unused private members, and (5) unused labels.

Soweit ist auch alles klar. Ich frage mich aber, ob es sinnvolle Beispiele gibt, in denen solche Fälle überhaupt auftreten können? Wieso sollte man z.B. eine (private) Membervariable, oder eine lokale Variable einführen, wenn man sie überhaupt nicht benutzt? Wieso sollte man etwas importieren, was man nicht benötigt? Ist es nicht sinnvoller das, was ohnehin nicht benötigt wird, einfach wegzulassen?

Gruß Fant
 
Normalerweise braucht man das SuppressWarnings("unused") nicht. Mir ist es bisher nur im Zusammenhang mit Mocking-Frameworks begegnet:

Java:
@Test
public void irgendeinTollerTest() {
    final MyEntry entry = createEntry();

    new MockUp<MyEntryDao>() {
        @Mock
        @SuppressWarnings("unused")
        public List<MyEntry> findAll() {
            return Arrays.asList(entry);
        }
    };
    MyServiceImpl service = createService();
    service.start();
    assertThat(service.getEntryList().size(), is(1));
}

Ohne das SuppressWarnings meckert der Compiler.
 
Im falle von Methodenparamtern kann das schon Sinn machen, wenn die Methode zB. von einem allgemeinen Interface vorgegeben ist, diese spezielle Implementierung aber eben nicht alle Parameter nutzt die in der Signatur angegeben sind, denn man muss die Parameter dann angegeben, nutzt sie aber nciht.
 
Im falle von Methodenparamtern kann das schon Sinn machen, wenn die Methode zB. von einem allgemeinen Interface vorgegeben ist, diese spezielle Implementierung aber eben nicht alle Parameter nutzt die in der Signatur angegeben sind, denn man muss die Parameter dann angegeben, nutzt sie aber nciht.

Meinst du damit sowas in der Richtung?
Java:
@Override
    public void foo( int x, String y )
    {
       

    }

Da bekomme ich nämlich keine Warning, allerdings hier:

Java:
@Override
    public void foo( @SuppressWarnings( "unused" )
    int x, String y )
    {

    }
folgende:
Unnecessary @SuppressWarnings("unused")

Kann es sein, dass das in älteren Java/Eclipse-Versionen mal eine Warning gab wenn man Parameter nicht verwendet hat?

Gruß
 
ich habe z.B. eine Testklasse mit 10 Methoden, die in einer anderen Methode alle in 10 Zeilen untereinander aufgerufen werden,
davon sind meist 9 auskommentiert, nur eine aktiv
 

Zurück
Oben