小编ehb*_*ian的帖子

如何将通配符 (?) 转换为泛型类型 T?

我有一个静态方法,我想用它来加载类并在运行时实例化我的对象,但是当我编译时,我收到了这个警告:

warning: [unchecked] unchecked cast
            T t = (T) ctor.newInstance();
required: T
found:    CAP#1
where T is a type-variable:
    T extends Object declared in method <T>forName(String,Set<String>)
    where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?
1 warning
Run Code Online (Sandbox Code Playgroud)

这是代码:

public static <T> Set<T> forName(String modulePath, Set<String> classes) throws InvalidModuleException{
    try {
        ClassLoader cl = new URLClassLoader(new URL[]{new URL(modulePath)});

        Set<T> list = new HashSet<>(classes.size());
        for (String className : classes) {
            Class<?> clazz = (Class<?>) Class.forName(className, true, cl);
            Constructor<?> …
Run Code Online (Sandbox Code Playgroud)

java generics casting wildcard

5
推荐指数
1
解决办法
3531
查看次数

标签 统计

casting ×1

generics ×1

java ×1

wildcard ×1