La maggior parte della documentazione relativa alla gestione della cancellazione dei tipi in Java presuppone che il caso d'uso stia gestendo un tipo come SomeType<ParamType>
. Sto cercando di elaborare parametro del metodo per il metodo seguente:Java: acquisizione del tipo interno in tipi parametrici nidificati (riflessione)
public void setOtherReferenceRanges(List<ReferenceRange<T>> referenceRanges)
Quando la classe contenitore è un'istanza con un tipo DvQuantity, questa firma dovrebbe diventare public void setOtherReferenceRanges(List<ReferenceRange<DvQuanitity>> referenceRanges)
in fase di esecuzione.
Utilizzando la riflessione si può vedere che lo List
ha uno actualTypeArgument
che è ReferenceRange<T>
. Dal momento che la riflessione utilizza le informazioni di classe, non mi aspetto che mi dia ReferenceRange<DvQuantity>
. Tuttavia, quando ho creato la classe contenente questo metodo, ho passato il tipo DvQuantity
come T
. Quindi il tipo che compila T
dovrebbe essere disponibile per il runtime Java, ma non sono riuscito a trovare un modo per ottenerlo. Finisco con un oggetto TypeVariableImpl
a cui si accede tramite la riflessione, che non sembra contenere dati utili.
Riesci a pensare a qualche modo per scoprire queste informazioni in runtime?
Grazie per la risposta. Convalida ciò che ho visto finora. Sfortunatamente non ho alcun potere sul setup in cui ho bisogno di fare questo lavoro. Anche grazie ad altre risposte, tutte utili se avessi il controllo della situazione. – mahonya