T kann jedes beliebige Objekt sein. Also Float, Integer, String etc.
Was bedeutet dann deiner Meinung nach:
Code:return (Integer) x > (String) y
Genau und so ergeht es deinem Compiler, er kann es nicht unterscheiden.
Abhilfe schaft hier
Code:equals()
public class Foo {
public static <T extends Comparable<T>> T max(T x, T y) {
return x.compareTo(y) > 0 ? x : y;
}
}
Da gebe ich dir natürlich voll und ganz recht, my failDas kann aber in diesem Fall nicht möglich sein, da nur 1 Typ definiert ist, können es nicht 2 verschiedene sein, aber das Problem bleibt dennoch.
Was Du aber machen könntest wäre sowas wie das.
Java:public class Foo { public static <T extends Comparable<T>> T max(T x, T y) { return x.compareTo(y) > 0 ? x : y; } }
T kann auch Object sein, dann sind als konkrete Typen auch Integer und String möglichDas kann aber in diesem Fall nicht möglich sein, da nur 1 Typ definiert ist, können es nicht 2 verschiedene sein, aber das Problem bleibt dennoch.
Dann ist T aber Sinnlos, daher habe ich das gleich ausgeschlossen. Sowas macht man doch nicht.T kann auch Object sein, dann sind als konkrete Typen auch Integer und String möglich![]()
Danke!T kann jedes beliebige Objekt sein. Also Float, Integer, String etc.
Was bedeutet dann deiner Meinung nach:
Code:return (Integer) x > (String) y
Genau und so ergeht es deinem Compiler, er kann es nicht unterscheiden.
Abhilfe schaft hier
Code:equals()