Cannot refer to a non-final variable

Status
Nicht offen für weitere Antworten.

McSnoop

Bekanntes Mitglied
Code:
   private void write(){ 
      try{ 
         out = new BufferedWriter(new FileWriter("linked.txt"));
         int x = 0; 
         int y = 0; 
         String sLine = ""; 
        
         while (y < table.getRowCount()){                    <---------- er bringt fehlermeldung bei table
               while (x < table.getColumnCount()){ 
                  sLine += table.getValueAt(y, x); 
                  sLine += "|"; 
                  x++; 
               } 
              
                  out.write(sLine); 
                  out.newLine(); 
                
               sLine = ""; 
               y++; 
               x = 0; 
                
         } 
         out.close(); 
      } 
      catch( IOException ex ){ex.printStackTrace();}


"Cannot refer to a non-final varaible table inside an inner class defined in a different method"

aufgerufen wird write im

addActionListener eines Buttons.

unmittelbar über dem addActionListener wird die table ins scrollpane geadded.

wo liegt das problem???

in einigen Beispielen wurde es genauso gemacht und bei denen funzte es laut deren aussage.
 

thE_29

Top Contributor
Mach keine Inline Funktion drauß, sondern eine normale, dann müsste es gehen!


Wenn du table nur als Funktionsvariable angelegt hast, geht das sowieso net, du musst dir eine anonyme Klasse (der Listener) als eine innere Klasse vorstellen. Wenn das dann eine Funktionsvariable ist, kann der drauf net zugreifen, ist es eine Klassenvariable, so kann er es.

Lässt du die Klassenvariable so musst du sie als final == nicht veränderbar speichern!

Außerdem wunder ich mich immer warum ihr alle so neidig seid mit eurem Code herzeigen....
Glaubt ihr den klaut euch jemand??
...
 

McSnoop

Bekanntes Mitglied
warum ich den code nicht komplett reinstelle hab ich ja schon des öffteren geschrieben, weil ich auf nem Laptop schreibe und mit dem nicht hier ans netz darf und ich habe einfach nicht die zeit immer alles abzutippen was sich geändert hat. Ansonsten würde ich ja C&P machen.

so ganz komm ich mit deiner erläuterung nicht klar.
was ist eine Inline und was nicht??

die steht doch extra und wird dann beim listener aufgerufen.

die Tabelle wird bei mir so angelegt.

Code:
 ....
 model model = new model();
 JTable table = new JTable(model);
 ...

welche Variable sollte final sein??
 

thE_29

Top Contributor
Das JTable muss als Klassenvariable angelegt sein!

Wenn du etwas final nennst, kann es nicht verändert werden!!


also
Code:
private JTable table = null;
//blabla

//deine Funktion
model model = new model();
table = new JTable(model);
//listener usw

so sollte es gehen!

Inline = anonyme Funktionen (MouseListener, etc) das sind Funktionen die in einer anderen Funktion geschrieben sind => inline!
 

McSnoop

Bekanntes Mitglied
geht.

aber warum table als Klassenvariable definiert werden muss schnall ich noch nicht.

wo liegt da der unterschied.

gut wenn ich es als Klassenvariable deklariere und dann gleich null setze ist es gleich iniziiert oder??

ansonsten würde dies das model tun oder nicht?
 

thE_29

Top Contributor
Klassenvariable = Variable ist in ganzer Klasse verwendbar

Funktionsvariable = Variable ist nur in der Funktion verwendbar!

Du kannst ja außerhalb der einen Funktion ja auch nicht auf model oder table zugreifen und ein anonym eingehängter Listener ist eine andere private innere Klasse, deswegen gehts nicht!
 

Snape

Bekanntes Mitglied
thE_29 hat gesagt.:
Klassenvariable = Variable ist in ganzer Klasse verwendbar

Funktionsvariable = Variable ist nur in der Funktion verwendbar!

Du kannst ja außerhalb der einen Funktion ja auch nicht auf model oder table zugreifen und ein anonym eingehängter Listener ist eine andere private innere Klasse, deswegen gehts nicht!


Aha, und was ist dann eine Objekt- oder auch Instanzvariable? ;)
 

mic_checker

Top Contributor
Eine Klassenvariable existiert unabhängig von einer Instanz der Klasse. Btw. eigentlich sprechen wir in Java von Methoden (statt Funktionen) , aber....;)

Eine Instanzvariable gehört zur jeweiligen Instanz der Klasse. Wie der Name schon sagt...
 

Snape

Bekanntes Mitglied
mic_checker hat gesagt.:
Eine Klassenvariable existiert unabhängig von einer Instanz der Klasse.

Eine Instanzvariable gehört zur jeweiligen Instanz der Klasse. Wie der Name schon sagt...


Exakt, deshalb ist der Begriff Klassenvariable von thE_29 nicht korrekt wiedergegeben worden.
Prinzipiell sind bei Java Klassenvariablen durch die Deklaration als static zu erkennen/definieren.

private JTable table ist deshalb keine Klassenvariable, sondern eine Instanzvariable.
 

thE_29

Top Contributor
Jo, lasst mich alle in Ruhe :D

Ich hab halt nur C/C++ gelernt und bin dann auf Java umgestiegen ;)

Und in C hieß das halt alles noch Funktion und globale Variable, in C++ hieß es dann zwar schon wie in Java (Methoden, Instanz, etc) aber ich hab mir nie die Mühe gemacht, das auswendig zu lernen!

Was bringts dir wenn du weißt was ne Instanzvariable ist oder eine Klassenvariable, wenn du es net anwenden kannst.

Und im Berufsleben gibts keine Aufgabenstellung wie im Test. Glaube kaum das der Kunde ins Pflichtenheft reinschreibt, "mach mir nur Instanzvariablen, sonst gibts Haue" :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
T Cannot refer to an instance field xxx while explicitly invoking a constructor Java Basics - Anfänger-Themen 14
W Cannot find Symbol Java Basics - Anfänger-Themen 5
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Cannot resolve symbol 'HttpServlet' Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
jakobfritzz Array- cannot invoke "" because "" is null Java Basics - Anfänger-Themen 4
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
V ClientProtocolException cannot be resolved Java Basics - Anfänger-Themen 6
A Cannot find symbol mit Konstruktoren Java Basics - Anfänger-Themen 27
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
J The import org.bukkit cannot be resolved Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
L cannot find symbol variable Kon Java Basics - Anfänger-Themen 8
L constructor cannot be applied... Java Basics - Anfänger-Themen 22
F Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 5
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
R return: cannot find symbol Java Basics - Anfänger-Themen 2
L Bluej Error: Cannot find Symbol Java Basics - Anfänger-Themen 13
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
S Cannot find symbol (symbol ist eine Variable) Java Basics - Anfänger-Themen 13
N Cannot find symbol Java Basics - Anfänger-Themen 18
T Error: int cannot be dereferenced Java Basics - Anfänger-Themen 10
J JLabel cannot be resolved Java Basics - Anfänger-Themen 8
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
P Cannot find symbol, wieso? Java Basics - Anfänger-Themen 5
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
M Erste Schritte cannot find symbol - Probleme mit Klassen Java Basics - Anfänger-Themen 6
B OOP next cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
J Error: cannot find symbol - variable Java Basics - Anfänger-Themen 3
D Java Eclipse cannot be cast to java.awt.event.ItemListener Java Basics - Anfänger-Themen 3
F Erste Schritte parseint: cannot find symbol Java Basics - Anfänger-Themen 6
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
M Erste Schritte [Variable] cannot be resolved to a variable Java Basics - Anfänger-Themen 4
M The Selection cannot be launched... Java Basics - Anfänger-Themen 4
M Vererbung - Cannot Find Symbol constructor... Java Basics - Anfänger-Themen 11
D error: cannot find symbol Java Basics - Anfänger-Themen 3
B Frage zu Beispielprogramm: "error: cannot find symbol" Java Basics - Anfänger-Themen 2
M Methoden Cannot be resolved to a variable Java Basics - Anfänger-Themen 5
BlueMountain Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 2
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
L Error: Cannot find symbol Java Basics - Anfänger-Themen 1
W int cannot be dereferenced Java Basics - Anfänger-Themen 5
P Cannot find Symbol Java Basics - Anfänger-Themen 3
K Compiler-Fehler Button cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
K The Java Runtime Environment cannot be found. Java Basics - Anfänger-Themen 6
F Input/Output IOTools Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 16
L Cannot Find Symbol - Was soll denn das bedeuten?!? Java Basics - Anfänger-Themen 7
P StdIn.readDouble: cannot find symbol Java Basics - Anfänger-Themen 7
B Fehler "Cannot find symbol - variable number1" Java Basics - Anfänger-Themen 13
P Variablen Cannot be resolved to a variable Java Basics - Anfänger-Themen 8
B Compiler-Fehler cannot find symbol Java Basics - Anfänger-Themen 6
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
T Cannot convert from Integer to int Java Basics - Anfänger-Themen 12
K Cannot find symbol Java Basics - Anfänger-Themen 3
H cannot find symbol Java Basics - Anfänger-Themen 4
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
S cannot find symbol, symbol: constructor Java Basics - Anfänger-Themen 2
3 Compiler-Fehler Fehlerbehebung cannot find Symbol Java Basics - Anfänger-Themen 4
R Compiler-Fehler Cannot find symbol (Method printIn) Java Basics - Anfänger-Themen 3
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
M Meldung "cannot convert flom boolean to boolean[]" Java Basics - Anfänger-Themen 3
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
B Polymorphie A obj = new B; "cannot find symbol app()" Java Basics - Anfänger-Themen 5
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6
T Cannot find Symbol(String) Java Basics - Anfänger-Themen 9
C cannot convert from int to boolean Java Basics - Anfänger-Themen 3
2 Compiler-Fehler cannot find symbol Java Basics - Anfänger-Themen 13
N Erste Schritte import javax.media.3d....; //Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 10
B Erste Schritte cannot find symbol - problem Java Basics - Anfänger-Themen 9
P Compiler-Fehler Cannot make a static reference to the non-static field process Java Basics - Anfänger-Themen 3
K int cannot be dereferenced Java Basics - Anfänger-Themen 2
H LocationReferenceImpl cannot be resolved to a type Java Basics - Anfänger-Themen 5
D Cannot find symbol variable Java Basics - Anfänger-Themen 9
A Compiler-Fehler Cannot find Symbol Java Basics - Anfänger-Themen 6
M Objekt Cannot instantiate the type ... Java Basics - Anfänger-Themen 10
V Datentypen int cannot be dereferenced Java Basics - Anfänger-Themen 4
R Compiler-Fehler sequenz cannot be resolved or is not a field Java Basics - Anfänger-Themen 2
V Packages: Cannot find symbol Java Basics - Anfänger-Themen 12
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
T Cannot be resolved to a variable Java Basics - Anfänger-Themen 8
E Klassen ClassCastException bei gleichnamigem: paket.klasse cannot be cast to paket.klasse Java Basics - Anfänger-Themen 10
C i cannot be resolved (obwohl es im schleifekopf initialisiert worden ist) Java Basics - Anfänger-Themen 2
W Compiler-Fehler variable cannot be resolved / duplicate local variable Java Basics - Anfänger-Themen 11
C Fehlermeldung "The import TestProjekt cannot be resolved". Warum? Java Basics - Anfänger-Themen 7
R Cannot find a free socket for the debugger Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben