public class Test {    public static void main(String[] args) throws ClassNotFoundException {
        Class<Test> c=(Class<Test>)Class.forName("Test");
    }
}[unchecked] 未经检查的类型使用
找到: java.lang.Class<capture#698 of ?>
需要: java.lang.Class<Test>
怎么写才能没有警告?
谢谢!

解决方案 »

  1.   

    你这是哪跟哪啊?你的Class是容器吗?
      

  2.   

    没明白??
    Class我用的是java.lang.Class类
      

  3.   

    Class<?> c=(Class<?>)Class.forName("Test");forName
    public static Class<?> forName(String className)throws ClassNotFoundException
      

  4.   

    很简单,写一个专用的工具类,进行强制类型转换。在这个工具类中,加上@SuppressWarnings(value = {"unchecked"}) 。在项目中,为了避免强制类型转换的警告信息,一般都这么干。
      

  5.   


    我开始的目的是为使用一个函数,返回值是Test
      

  6.   

    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;public abstract class Test {    protected String a;    public Test(String a) {
            this.a=a;
        }    public abstract void print();    /**
         * 根据不同的Test子类名称来获得子类对象
         *
         * @param className  类名称 test 子类的名称 例如 Test1、Test2
         * @param initString 初始化类的字符串
         * @return Test的子类,如果是className=“Test1”返回Test1对象
         * @throws ClassNotFoundException ClassNotFoundException
         * @throws NoSuchMethodException  NoSuchMethodException
         * @throws IllegalAccessException IllegalAccessException
         * @throws InstantiationException InstantiationException
         * @throws java.lang.reflect.InvocationTargetException
         *                                InvocationTargetException
         */
        public static Test getTest(String className, String initString) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
            Class<Test> c = (Class<Test>) Class.forName(className);
            Constructor<Test> ct = c.getConstructor(String.class);
            return ct.newInstance(initString);
        }    public static void main(String[] args) throws Exception {
            Test a=getTest("Test1","15");
            a.print();
        }
    }class Test1 extends Test {
        Test1(String a) {
            super(a);
        }    public void print() {
            System.out.println("Test1 print : a="+this.a);
        }
    }class Test2 extends Test {
        Test2(String a) {
            super(a);
        }    public void print() {
            System.out.println("Test2 print : a="+this.a);
        }
    }
    这是程序[unchecked] 未经检查的类型使用
    找到: java.lang.Class<capture#698 of ?>
    需要: java.lang.Class<Test>
    怎么写才能没有警告?
    谢谢!
      

  7.   


    参照代码如下
        @SuppressWarnings("unchecked")
        public static <T> T typeCast(final Object src) {
            T temp= (T) src;
            return temp;
        }