Hm, interessant. Sowas in der Art?
zum Beispiel, ja...
Kriegt man das hin, dass man beim Aufruf von new Reverse() nicht noch extra <String> hinzuschreiben muss, weil das ja durch Konstruktorparameter sowieso klar ist? Oder sind Generics nicht so mächtig?
Was heißt "nicht so mächtig"? Du hast dir hier 1 aus 100 Fällen ausgesucht, wo die Angabe der Klasse überflüssig ist, sollen die Sprachentwickler jetzt für jeden solchen Spezialfall eine eigene Syntax entwickeln, und sich 7568327 Ausnahmeregelungen ausdenken, wo was angegeben werden soll, und wo nicht?
Hätte ja auch irgendwie so aussehen können:
[highlight=Java]
class A{}
class B extends A{}
class C extends B{}
class Reverse<T> implements Comparator<T>
{
private final Comparator<? super T> comp;
public Reverse(Comparator<? super T> comp)
{
this.comp = comp;
}
public int compare(T o1, T o2)
{
return comp.compare(o2, o1);
}
}
...
Comparator<? super C> c=new Reverse<B>(new Comparator<A>(){
@Override
public int compare(A arg0, A arg1) {
// TODO Auto-generated method stub
return 0;
}
});
[/highlight]
Welche eckige Klammern soll man denn da weglassen, wenn überall was anderes drinsteht? Ob's konkret hier großartig Sinn macht ist eine andere frage, die Sprache ermöglicht jedenfalls ganz allgemein solche Sachen zu formulieren, ohne irgendwelche spezialfälle...