error: non-static variable this cannot be referenced from a static context

mäks

Mitglied
Hallo Zusammen,

ich bin Java Neuling (brauch das für die Arbeit) und versuche mich gerade an Datenstrukturen und versuche zumindest mal das ConwaysGameOfLife auf Konsolenebene nachzucoden.

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conwaysgameoflife;

/**
 *
 * @author Maks
 */
public class ConwaysGameOfLife {

    /**
     * @param args the command line arguments
     */
    
    class world {
        
        boolean welt [][] = new boolean[9][9];
        
        void fuellen()
        {
            for (int i=0; i<=9; i++)
            {
                for (int j=0; j<=9; j++)
                {
                    welt[i][j]= true;
                }
            }
        }
        
        void ausgabe ()
        {
            System.out.println(welt[1][1]);
        }
        
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        
        //Erstelle ein neues Objekt der Klasse welt
        
        world gen1= new world();
        
        // Fuelle Matrix mit Werten 'true'
        
        gen1.fuellen();
        
        // Testausgabe

        gen1.ausgabe();
        
        
    }
}

Also ich hab eine Klasse 'world' die ein 2 dimensionales leeres Array als Eigenschaft hat.

Methoden dazu sind 'fuellen':

Dient primär um alle Elemente des Arrays einfach mit 'true' zu fuellen.

Versuche ich jetzt über die Main Methode ein neues Objekt der Klasse 'world' zu erstellen bekomme ich die Fehlermeldung:

error: non-static variable this cannot be referenced from a static context.


Kann mir jemand sagen warum das nicht funktioniert, ich versteh den Hintergrund der Sache nicht, da die main methode beim Erstellen einer neuen Java Klasse mit netbeans bereits so eingerichtet ist.


Danke und Lg

Max
 

sheel

I love Asm
Hi

um dir eine für deinen Wissensstand möglichst sinnvolle Erklärung zu geben:
Wie sehr kennst du dich in Java bzw. programmiersprachenunabhängig mit Objektorientierung aus?
Hast du in Java schon Programme gemacht, die mehr außer Main hatten
(mehr Methoden und/oder ganze Klassen)?
 

mäks

Mitglied
Hi sheel,

ich bewege mich da noch sehr in der Basis. Objektorientierung bin ich auch noch Neuling, kann aber mit den Grundkonstrukten schon etwas anfangen. Nur diese in dem Beispiel.
 

Writtscher

Mitglied
Hallo und willkommen in der schönen Java-Welt. Erstmal zu deinem Problem: Da "main" static ist, hast du nur Zugriff auf "static" Komponenten, sei es Variablen oder Klasse. Das heißt ein static vor "class world" löst dein Problem bzw. du machst die Klasse "world" in eine eigene "Datei" (also eine eigenständige Klasse und keine innere Klasse)

Ich würde dir aber Vorschlagen erstmal ein wenig lesen :) und dich mit den Grundlagen zu beschäftigen.
 
Zuletzt bearbeitet:

diel2001

Mitglied
Du brauchst für die innere Klasse "world" eine Instanz der äußere Klasse "ConwaysGameOfLife"

Code:
ConwaysGameOfLife cgol = new ConwaysGameOfLife();
world w = cgol.new world();

Oder du machst die Klasse "world" statisch. Dann funktioniert folgendes:

Code:
world w = new world();
 

mäks

Mitglied
Hi,

ich hab die Klasse world einfach statisch gemacht und dann funktionierts :).

Kennt jemand ein gutes Online Tutorial?