Ich habe kürzlich begonnen Java zu lernen (mit dem Buch - Java ist auch eine Insel). Nun bin ich im Kapitel 3.11.6 auf einen Code gestoßen, der einfach nicht funktionieren will und ich mir keinen Reim drauf machen kann woran es noch liegen könnte.
Hier erstmal mein Code:
Code:
package string;
import static java.lang.Math.max;
import static java.lang.System.out;
class SImport {
static int max(int a, int b, int c) {
return max(a, max(b, c));
}
public static void main(String[] args) {
out.println(max(1, 10)); // 10
out.println(max(1, 10, 100)); // 100
}
}
als Fehler wird max(b, c) und max(1, 10) im Eclipse rot unterkringelt. Package, class etc stimmen.
Beim Ausführen wird folgendes ausgegeben:
Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method max(int, int, int) in the type SImport is not applicable for the arguments (int, int)
at string.SImport.main(SImport.java:12)
also dass du deine Operation genau wie Math.max benannt hast, daran bestimmt nicht..
edit: ok, du hast schon etwas mehr nachgedacht, bei mir funktioniert es auch,
hast du vielleicht eine ältere Java-Version oder Compliance-Level kleiner 1.5, falls dies erst eine neuere Funktion ist?
funktioniert der statische Import ohne den Namenskonflikt, also nur importieren und benutzen?
ohne den Namens Konflikt funktionierts problemlos.
Java Version etc sind relativ frisch installiert und sollten auf dem neusten Stand sein.
Wo schaut man denn den Compliance-Level nach.. ?
Ich hab die aktuelleste Eclipse Version, Java ist auf dem neusten Stand und Compliance-Level ist 1.6.
und Preferences> Java>Compiler>Compiler compliance level ist auf 6.0 gestellt / habs auch mal mit 5.0 probiert.
Aber es will immer noch nicht funktionieren. Es sei denn ich benutze Math.max bzw vermeide den Namens Konflikt... naja werd noch ein bisschen experimentieren. Benutze übrigens auch einen Laptop (Link ein Beitrag vorher :shock: )
Ich hab die aktuelleste Eclipse Version, Java ist auf dem neusten Stand und Compliance-Level ist 1.6.
und Preferences> Java>Compiler>Compiler compliance level ist auf 6.0 gestellt / habs auch mal mit 5.0 probiert.
Aber es will immer noch nicht funktionieren. Es sei denn ich benutze Math.max bzw vermeide den Namens Konflikt... naja werd noch ein bisschen experimentieren. Benutze übrigens auch einen Laptop (Link ein Beitrag vorher :shock: )