@ La risposta di Philipp è giusta per la tua domanda diretta, ma facciamo un passo indietro per rivedere le ipotesi.
Primo presupposto: stai utilizzando Java 8 o versioni precedenti. (Una versione futura supporterà Generics over Primitive Types .)
In secondo luogo, perché usare i farmaci generici qui? Potenzialmente è possibile risparmiare spazio se si dispone di un numero molto elevato di vettori in memoria, ma il boxing richiederà più spazio per vettore rispetto al salvataggio utilizzando float
anziché double
. Un oggetto vettoriale 3D con valori di 3 Double
o Float
richiederà 4 nodi heap e conseguenti errori di localizzazione indiretta e cache della CPU.
Generics aggiungerà complessità oltre a spazio e tempo. Il codice generato eseguirà tutti i calcoli con valori di double
in modo che non salverà il tempo di calcolo della CPU, in quanto ciò comporterà un ulteriore risparmio di tempo matematico per convertire% valori difloat
in double
.
L'overhead dello spazio si riduce se si memorizzano tutti i valori in double[]
o float[]
poiché si tratta di una singola casella per tutti i valori, ma c'è ancora un nodo heap aggiuntivo per istanza e ora ci sono controlli dei limiti della matrice su ogni numero recupera e memorizza.
Se vuoi davvero risparmiare spazio con un numero molto grande di vettori in memoria, il modo per farlo in Java 8 è di avere una classe astratta Vector
con un'API che usa valori double
e FloatVector
e DoubleVector
sottoclassi che contengono direttamente 3 valori primitivi.
Di nuovo, se non ne hai molti in memoria, vai per una semplice classe Vector
che contiene double
(o float
) valori.