Generics Compilerfehler

Diskutiere Generics Compilerfehler im Java Basics - Anfänger-Themen Bereich.
G

Gansa

Wieso meldet der Compiler bei x > y einen Fehler? Es sagt "cannot Applied to T T". Ich verstehe das nicht genau.

Code:
public final class Algorithm  {


    public static <T> T max(T x, T y) {

        return x > y ? x : y;
    }
}
 
T

TM69

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

sascha-sphw

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

TM69

Das 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;
    }
}
Da gebe ich dir natürlich voll und ganz recht, my fail
 
G

Gansa

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()
Danke!
 
Thema: 

Generics Compilerfehler

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben