Non è possibile ottenere il tipo.
I generici sono implementati utilizzando qualcosa chiamato type-erasure.
Quando un tipo generico viene creata un'istanza, il compilatore traduce quei tipi da una tecnica chiamata tipo cancellazione - un processo in cui il compilatore rimuove tutte informazioni relative ai parametri di tipo e digitare gli argomenti all'interno di una classe o di metodo. La cancellazione di tipo abilita le applicazioni Java che usano i generici per mantenere la compatibilità binaria con le librerie e le applicazioni Java che sono state create prima dei generici.
L'essenza di questo è che l'informazione sul tipo viene utilizzata dal compilatore e scartata, quindi non disponibile in fase di esecuzione.
Per quanto riguarda il far rispettare T implements Serializable
, basta il seguente:
public class MyClass<T extends Serializable>)
{
public void function(T obj)
{
...
}
}
Questo è semplicemente riferendo al è un rapporto, in modo da una classe che implementa Serializable
, è unSerializable
e può passare a function
.
fonte
2009-08-24 07:36:49
Potrebbe aggiungere un esempio di ciò che si desidera effettivamente ottenere? – Zed