¿La siguiente declaración de clase debería compila o no?, ¿porqué?
public final class Algorithm {
public static T max(T x, T y) {
return x > y ? x : y;
}
}
Recibe ayuda de expertos
Es gratis y fácil
Respuestas, votos y comentarios
Recibe puntos, vota y da la solución
¿La siguiente declaración de clase debería compila o no?, ¿porqué?
public final class Algorithm {
public static T max(T x, T y) {
return x > y ? x : y;
}
}
No compila, falta la definición de T como generic:
public static <T> T max(T x,T y) ...
Luego de eso el operador > no está definido para clases.
Si lo que quieres es comparar objetos, no te sirve una clase que implemente genéricos, a no ser que sean "T implements Comparable". Si lo que quieres es comparar tipos primitivos, tampoco te sirve esto, puesto que no son objetos. Si comparas objetos comparables no lo puedes hacer mediante operador, sino que tienes que comparar con el método CompareTo. Todo esto a parte de lo que comenta Peter, que falta la definición de T como genérico.