public class Test {
public Map<String, String> dummy;
public static void main(String... args) throws SecurityException,
NoSuchFieldException {
Type mapStringString = Test.class.getField("dummy").getGenericType();
// ...
Est-ce un légèrement bidouille moins laid ..
Comme Tom Hawtin suggère, vous pouvez mettre en œuvre les méthodes vous:
Type mapStrStr2 = new ParameterizedType() {
public Type getRawType() {
return Map.class;
}
public Type getOwnerType() {
return null;
}
public Type[] getActualTypeArguments() {
return new Type[] { String.class, String.class };
}
};
renvoie les mêmes valeurs que l'autre approche pour les méthodes déclarées au ParameterizedType
. Le résultat de la première approche même .equals
ce type. (Cependant, cette approche ne remplace pas toString, equals et ainsi de suite, donc en fonction de vos besoins, la première approche pourrait être meilleure.)
vous devez faire du public pour que le hack fonctionne. – aioobe
Pour quoi avez-vous besoin de cette information, après tout? Si vous développez cela, de meilleures réponses peuvent être données. – BalusC
@aioobe Si c'est la même classe, alors 'private' est correct. 'ThisClass.class' ou' getClass() 'aurait été préférable à l'utilisation de' Class.forName'. –