Java: Was ist an meinen Code falsch: Cannot make a static reference to the non-static method ....?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

addRezept ist eine Methode eines Objekts und kann daher so nicht aufgerufen werden.

Du musst in deiner Main schreiben:

Testclasse test = new Testclasse();
test.addRezept("Test");

MrRayman 
Beitragsersteller
 03.02.2018, 11:19

Jetzt klappt es und ich habe meinen Fehler verstanden. Danke, schön.

Das mit static ist zu Beginn etwas verwirrend, aber eigentlich leicht zu verstehen. Lies dir dazu mal folgende Seite durch: http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_05_003.htm#mjd51d5220468ee4a1f2a07b6796bb393b

In deinem Fall soll die Methode addRezept aber keine "allgemein gültige" Methode sein, sondern sich auf ein Objekt beziehen. Um diese aufzurufen brauchst du also zunächst ein Objekt:

public static void main (String[] args){
    Testclasse testobjekt = new Testclasse(); //neues Objekt mit einer eigenen HashMap
    testobjekt.addRezept("Test"); //aufruf von addRezept von deinem Objekt
}

~Tim

es fehlt das Wort "static", wenn du die Methode ohne Objekt aufrufen willst

static void addRezept(String name){

als Alternative kannst du auch ein Objekt der Testclasse erstellen


PeterKremsner  03.02.2018, 15:19

static alleine würde in dem Fall nicht ausreichen, weil in der Methode auf eine nicht statische Membervariable der Klasse zugegriffen wird.

Ich arbeite meist mit einer eigenen Main-Methode (nenne sie mal top()).

Das sieht dann so aus, und Du brauchst Dich nie mehr um "static" zu kümmern.

import java.util.*;

public class Testclasse {   
 public static void main (String[] progArgumente){
   new Testclasse().top();
 }


 /*** DEIN CODE BEGINNT HIER: ***/
 void top() {
   addRezept("Test");
 }

 private HashMap<String, Rezept> rezeptList;
 rezeptList = new HashMap <String,Rezept>();

 void addRezept(String name) {
   rezeptList.put(name, new Rezept(name));
 }    

}