日期:2014-05-20  浏览次数:20633 次

谁能给个不报警告的反射例子~~
不要加@SuppressWarnings
用泛型解决
------
"cn.animal.Cat"是一个Animal类的子类
现在用字符串"cn.animal.Cat",创建一个对象,并赋值给一个Animal对象。
使用泛型,让代码不出警告...

------解决方案--------------------
手写一个看看

Animal animal = (Animal)Class.forName("cn.animal.Cat").newInstance();

这看似跟泛型没啥关系。。。
------解决方案--------------------
服了, 这个问题也要拿出来说.? 警告就警告, 有些时候警告只是编译器告诉你可能会出问题!
泛型本来就是给编译器看的, 运行时已经没有泛型了!
------解决方案--------------------
你确定你javac过?有警告?

探讨

手写一个看看

Animal animal = (Animal)Class.forName("cn.animal.Cat").newInstance();

这看似跟泛型没啥关系。。。

------解决方案--------------------
Java code

//没看到会有警告
public static void main(String[] args)throws Exception {
        Class<?> clazz = Class.forName("cn.animal.Cat");
        Animal cat = (Animal)clazz.newInstance();
        System.out.println(cat);
    }

------解决方案--------------------
Java code

BaseUnit bu = null;
    try {
    bu = (BaseUnit)Class.forName(cls.getName()).getConstructor(Context.class).newInstance(context);