Warum Autoboxing und Unboxing von Primitiven nicht mit Generics Java passiert.Generics mit Autoboxing und Unboxing von Primitiven
Hier, warum * Betrieb kann nicht durchgeführt werden und warum nicht zurück c.Any Hilfe wäre spürbar.
Warum Autoboxing und Unboxing von Primitiven nicht mit Generics Java passiert.Generics mit Autoboxing und Unboxing von Primitiven
Hier, warum * Betrieb kann nicht durchgeführt werden und warum nicht zurück c.Any Hilfe wäre spürbar.
int c = a*b;
Diese Aussage tatsächlich funktioniert, da T
durch Integer
begrenzt, so nach dem Löschen, die Typen von a
und b
sind Integer
und sie sind unboxed in int.
return c;
Dies funktioniert nicht, da der Rückgabetyp der Methode ist nicht Integer
, es T
ist, und obwohl <T extends Integer>
und Integer
ist final
, nur sein T
kann so Integer
, wird der Compiler erlauben nicht, dass , da es die finality
des gebundenen Typs nicht berücksichtigt (dh, soweit es betroffen ist, kann die Methode Instanzen einer Unterklasse des gebundenen Typs akzeptieren, und sie kann int
nicht an jede Unterklasse automatisch boxen -Klasse vom Typ gebunden).
Änderung der Rückgabetyp zu Integer
den Code Pass Compilation machen:
public static <T extends Integer> Integer addNumber(T a , T b){
int c = a*b;
System.out.println(c);
return c;
}
Natürlich ist es nicht sinnvoll Integer
zu verwenden macht (oder eine endgültige Klasse) als Typ für eine generische Art gebunden Parameter.
Generics sollen nicht mit primitiven Typen verwendet werden. T gibt einen Typparameter an, der ein Objekt sein sollte.
Weitere Referenz
Why don't Java Generics support primitive types? Java Generics ? , E and T what is the difference?
Restrictions on generics
Integer ist auch eine Wrapper-Klasse und wenn wir Mathematik-Operation auf ihr Objekt tun, ist es erlaubt, also warum nicht, wenn T integer erweitert – Pooja
@pooja https://docs.oracle.com/javase/tutorial/ Java/Generika/Beschränkungen.html –
Es ist auch nicht mit int c Arbeits = a * b. – Pooja
@Pooja Es tut für mich. Ich habe es gerade ausprobiert. – Eran
Wenn es ist nicht erlaubt a * b –
Pooja