# "Cannot make a static reference to the non-static field



## conan2 (11. Dez 2005)

Hier ein Problem, auf das ich immer wieder stoße. Ich verstehe nicht, warum z.B. folgender Code einen Error auslöst:


```
import java.io.BufferedReader;
import java.io.FileReader;

public class Schmelzkaese {
	BufferedReader in;

	public static void main(String[] args) {
		try {
			in = new BufferedReader(new FileReader("INPUT.TXT"));
		} catch (Exception e) {
		}
	}
}
```

Die Zeile "in = new BufferedReader(new FileReader("INPUT.TXT"));" löst einen Error, aus, der lautet "Cannot make a static refernce to the non-static field in". Kann mir jemand erklären, wie es zu diesem Error kommt? Dasselbe Problem gibts übrigens auch bei primitiven Datentypen.


----------



## byte (11. Dez 2005)

Die Main ist statisch, der BufferedReader in jedoch nicht. Entweder Du machst den Reader auch statisch oder Du musst in der Main erst ein Objekt instanzieren und dessen Reader benutzen. Du kannst auch einfach die BufferedReader Deklaration aus der Klasse in die Main übertragen.


----------



## Roar (11. Dez 2005)

guckst du hier: http://www.java-forum.org/de/viewtopic.php?t=7895


----------



## conan2 (12. Dez 2005)

Hat es auch irgendeinen Sinn, warum es verboten ist, in statischen Funktionen nicht-statische Objekte aus der Klasse zu verwenden? Kann es dabei Probleme geben? Irgendwie versteh ich nicht warum das verboten ist...


----------



## Sky (12. Dez 2005)

conan2 hat gesagt.:
			
		

> Hat es auch irgendeinen Sinn, warum es verboten ist, in statischen Funktionen nicht-statische Objekte aus der Klasse zu verwenden? Kann es dabei Probleme geben? Irgendwie versteh ich nicht warum das verboten ist...



statisch = bezogen auf die Klasse
nicht statisch = bezogen auf eine Instanz

Jetzt die Frage: Woher soll eine statische Methode wissen, um welche Instanz es sich nun handelt !?


----------



## Roar (12. Dez 2005)

conan2 hat gesagt.:
			
		

> Hat es auch irgendeinen Sinn, warum es verboten ist, in statischen Funktionen nicht-statische Objekte aus der Klasse zu verwenden? Kann es dabei Probleme geben? Irgendwie versteh ich nicht warum das verboten ist...





			
				Roar hat gesagt.:
			
		

> guckst du hier: http://www.java-forum.org/de/viewtopic.php?t=7895



 :arrow:  :###  :!:  :bahnhof:  :meld:  :noe:  :idea:  :shock:  :!:

edit: es ist nicht *verboten* in statischen funktionen nich statische variablen zu verwenden, es ist schilcht logisch unmöglich!


----------



## Lim_Dul (12. Dez 2005)

Statisch = An die Klasse gebunden
Nicht statisch = An ein konkretes Objekt gebunden.

Wenn in in einer statischen Methode bist, dann gibt es kein konkretes Objekt der Klasse, zu der die Methode gehört.


----------



## Illuvatar (12. Dez 2005)

Stell dir vor es gibt eine Klasse Lichtschalter mit einer Eigenschaft "public Color farbe" (jaja schlechter Stil bla egal) und es gibt dazu viele Objekte Lichtschalter mit unterschiedlichen Farben.

Wenn du jetzt aus einer statischne Funktion farbe abfragst, was sollte das denn bitte zurückgeben, es gibt ja viele Objekte mit unterschiedlichen Farben.


----------



## conan2 (12. Dez 2005)

Ja, jetzt hab ichs verstanden, thx


----------

