有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    不能从值中获取此类型,但可以从字段信息中获取

    public class Main {
        interface Foo { }
        class A {
            List<Foo> myList = new ArrayList<Foo>();
        }
        public static void main(String... args) throws NoSuchFieldException {
            ParameterizedType myListType = ((ParameterizedType) 
                                    A.class.getDeclaredField("myList").getGenericType());
            System.out.println(myListType.getActualTypeArguments()[0]);
        }
    }
    

    印刷品

    interface Main$Foo
    

    可以检查字段、方法参数、返回类型和扩展类/接口,但不能检查局部变量或值

    这些都会产生相同的结果

    List<Foo> myList = new ArrayList();
    List<Foo> myList = (List) new ArrayList<String>();
    

    无法获取的泛型类型

    List myList = new ArrayList<Foo>();