簡體   English   中英

使用Java Reflection進行通用參數實例化發現

[英]Generic Parameter instantiation discovery with Java Reflection

請考慮以下情形:

class A<T> {}
class B extends A<Integer> {}

通過Java中的反射,如何得知B中的T類型變量被實例化為Integer

您可以使用

Type type = B.class.getGenericSuperclass();

// TODO: check with instanceof first?
ParameterizedType parameterized = (ParameterizedType) type;

// TODO: Check that there *are* type arguments
Type firstTypeArgument = parameterized.getActualTypeArguments()[0];

簡短但完整的示例:

import java.lang.reflect.*;

class A<T> {}
class B extends A<Integer> {}

public class Test {
    public static void main(String[] args) {
        Type type = B.class.getGenericSuperclass();
        ParameterizedType parameterized = (ParameterizedType) type;
        // Prints class java.lang.Integer
        System.out.println(parameterized.getActualTypeArguments()[0]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM