statischer Aufruf einer nichtstatischen Methode in der gleichen Klasse

Mustang123

Mitglied
Ich stehe grade vor einem ziemlichen Katze <--> Schwanz Problem

Java:
public class Test implements iface{
	
	public static void main(String[] args) {
		for (int i = 0; i < args.length; i ++) {
			System.out.println(berechne(args[i]));
		}
	}

	public int berechne(String number) {...} // diese Methode wird aus dem Interface überschrieben und das Interface darf nicht verändert werden
}

Das Interface gibt eine nichtstatische Methode "berechne(String number)", welche für jedem Eintrag im args Array ausgeführt werden soll. Allerdings brauche ich dafür eigentlich eine statische Methode, da ich aus iFace keine Instanzen erzeugen kann. Wie geht man da vor?

Ich hoffe das Problem war verständlich, ich tue mich noch etwas schwer mit der java Terminologie.
 
Zuletzt bearbeitet:

javampir

Bekanntes Mitglied
Eigentlich dürften dort IMHO nur statische Methoden drin sein ....

naja, sie müssen ja nicht statisch sein.

Wie sieht denn die Deklaration im Interface aus

Java:
public int berechne(String number);

die einfachste methode wäre es in main ein neues objekt Test anzulegen und dann im konstruktor den code aus der mainmethode (aber im nicht-statischen kontext) einfügen

@VfL_Freak: bitte berichtige mich, wenn ich grad volkommenen schwachsinn geschrieben habe

javampir
 

Mustang123

Mitglied
Hallo, danke für die schnelle Antworten :)
Wie sieht denn die Deklaration im Interface aus ???:L
Eigentlich dürften dort IMHO nur statische Methoden drin sein ....

Gruß
Klaus


das Interface schaut so aus

Java:
public interface iFace{
	public int berechne(String zahl);
}
Also eine leere Methode die einfach nur implementiert wird.
Mir ist wohl klar, dass es wohl zur pädagogischen Schikane gehört, dass die Methode nicht statisch ist. Aber ich steige halt nicht durch wie ich das letzendlich in der Main Methode ausführen soll. Möglich sein muss es ja. (hoffe ich:autsch:)

die einfachste methode wäre es in main ein neues objekt Test anzulegen und dann im konstruktor den code aus der mainmethode (aber im nicht-statischen kontext) einfügen

Also quasi eine neue klasse die einzig dazu dient die berechne() methode zu statifizieren (wortneuschöpfung:D) ?
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Was ist hier los?

Dynamisches Binden ist bei statischen Methoden nicht möglich. Daher kann ein INterface auch keine statischen Methoden vorschreiben oder implementieren.

Die Lösung hier ist trivial:
Java:
new Test().berechne(args[i]);

Feddich.

Oder habe ich was überlesen?
 

VfL_Freak

Top Contributor
Moin,

nee nee - alles gut!
ICH habe Schwachsinn gelesen und geschrieben :bloed: (war wohl zu kurz vor den Deutschland-Spiel :bae:)

Natürlich dürfen Interfaces keine abstrakten Methoden haben !!

Gruß
Klaus
 

Mustang123

Mitglied
Danke, ihr habt mir den Stoß in die richtige Richtung gegeben. :toll:

Ich habe total übersehen dass das Objekt Test ja schon per "public class Test" existiert und in sich selbst aufgerufen werden kann. Ich hab die ganze Zeit überlegt ob ich da jetzt eine neue Dummy-Klasse basteln soll, die einzig dazu dient und die Methode aufrufbar zu machen. Wäre schon sehr arg sinnlos.

Manchmal krieg ich echt zuviel von diesen rekursiven Strukturen in Java. :D
 

Oben