hab hier diesen beispiel code, es geht um generische Typprüfung und kovarianz, kontravarianz, invarianz usw.
Was genau bedeutet bei der statischen methode maxObject das "<T> T" ?
Ein T ist der Rückgabewert und das zweite ?
Was genau bedeutet bei der statischen methode maxObject das "<T> T" ?
Ein T ist der Rückgabewert und das zweite ?
Code:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Generics<T>
{
/* Der Comparator muss entweder T (im Beispiel Double) sein, oder ein/der Obertyp (hier Number) */
public static <T> T maxObject(List<T> list, Comparator<? super T> cmp)
{
T max = null;
for (T x: list)
{
if(max== null || cmp.compare(x, max) > 0)
max = x;
}
return max;
}
public static void main(String[] strings)
{
List<Double> list = new ArrayList<Double>();
list.add(2.3); list.add(23.2); list.add(74.0);
Double n = maxObject(list, new MyComparator());
System.out.println(n);
}
}
import java.util.Comparator;
public class MyComparator implements Comparator<Number>
{
public int compare(Number o1, Number o2)
{
return (o1.doubleValue() < o2.doubleValue() ? -1 :
(o1.doubleValue() > o2.doubleValue()) ? 1 : 0);
}
}