如何使用也键入的类型参数创建java.lang.Class?

时间:2012-10-24 14:33:00

标签: java generics

取代什么?在下面的代码中,它会起作用吗?

import java.util.List;

public class Generic {

    private static class Foo<T> {
        Foo(Class<T> clazz) {
            assert clazz != null;
        }
    }

    public static void main(String[] args) {
        Class<List<String>> x = ???;
        Foo<List<String>> t = new Foo<List<String>>(x);
    }

}

2 个答案:

答案 0 :(得分:6)

我会选择:

@SuppressWarnings("unchecked")
Class<List<String>> klass = (Class<List<String>>)((Class<?>) List.class);

你不需要这种类型的演员类的实例。

答案 1 :(得分:1)

在运行时,所有List“类”都相同,因为通用类型已被删除

Class<List<String>> x = (Class<List<String>>) (Class) List.class;