2017-01-08 1 views
-2

Ich möchte verstehen, warum diese Warnung in meinem Code angezeigt wird, und wie könnte ich es behebenWarnung: Feld nie lokal lesen

Edit:. (Aus irgendeinem Grund mein Code nicht korrekt angezeigt wurde, dass tut mir leid ich gebrauchter Backspace der Generika sichtbar.)

class LinkedSortedAppendList<T extends Comparable<T>> implements SortedAppendList<T>{ 

    private class ListCell { 
     T content; 
     ListCell prev; 
     ListCell next; 

     ListCell(T v, ListCell p, ListCell n) { 
      this.content = v; 
      this.prev = p; 
      this.next = n; 
     } 
    } 
+0

Bitte teilen Sie den vollständigen Code. – hotzst

+0

Dies ist eindeutig eine innere Klasse. Bitte zeigen Sie mehr Kontext. Wenn wir 'private' entfernen und' 'nach der' class ListCell' hinzufügen (z. B. es als nicht-innere Klasse kompilieren lassen), gibt es keine Compiler-Warnungen. Mehr: [mcve] –

+0

danke für deine Antwort, ich habe meinen Code bearbeitet, weil er nicht korrekt angezeigt wurde. Wenn ich hinzufüge, dann bekomme ich die Warnung "ist der Typ versteckt". Außerdem wurde mir gesagt, dass innere Listenzellklassen immer gekapselt werden sollten, also ist es notwendig, sie als privat zu deklarieren, nicht wahr? Und da ich das gleiche T wie in der äußeren Klasse verwende, ist es nicht notwendig, da richtig hinzuzufügen? – peterparker

Antwort

0

Sie haben ListCell Klasse als privat erwähnt zu machen, dass es sichtbar nur bedeutet, dass es Top-Level-Klasse. Der Umfang der Verwendung liegt innerhalb dieser Klasse. Wenn Sie sie nicht innerhalb dieser Klasse verwenden, erhalten Sie diese Warnung.

+0

ok, das macht Sinn, aber mir wurde gesagt, dass innere Liste Zellklassen sollten wegen des Verkapselungsprinzips privat gemacht werden. Gibt es eine Möglichkeit, dies zu lösen, ohne dieses Prinzip zu "brechen"? – peterparker

+0

Wenn die Verwendung Ihrer inneren Klasse nur auf ihre oberste Klasse beschränkt ist und keine andere Klasse sie verwendet, dann ist es sinnvoll, sie privat zu halten. Aber wenn Sie es nicht benutzt haben, in seiner obersten Klasse, dann hat es keinen Zweck, keine andere Klasse wird darauf zugreifen können. –

Verwandte Themen