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()