小编Vla*_*yin的帖子

在 Java 中转换为泛型子类

我想编写通用函数,它可以通过名称创建任何类型的对象并将其作为自己的类型返回,而不是作为对象类型。

import java.lang.reflect.Constructor;
public class Test{
    static <T extends Object> T makeObject(String className) {
        try {
            Class<?> c = Class.forName(className);
            Constructor<?> constructor = c.getConstructor();
            Object object = constructor.newInstance();
            return (T)c.cast(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args) {
         //without casting
         String obj = makeObject("java.lang.String");
         System.out.println(obj.getClass());
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我收到警告

Type safety: Unchecked cast from capture#4-of ? to T
Run Code Online (Sandbox Code Playgroud)

如何在不添加的情况下解决问题@SuppressWarnings("unchecked")

java generics casting

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

标签 统计

casting ×1

generics ×1

java ×1