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

4 Antworten

Vom Fragesteller 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 
Fragesteller
 03.02.2018, 11:19

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

2

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.

2

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));
 }    

}