这种警告是不能避免的,想把父类转成任何子类都会有这个警告,只要你知道你的方法获取到
的会是怎样的类型,保证程序运行时不会抛ClassCastException就行。

解决方案 »

  1.   


    public class A<T>
    {
    private T obj; public void setObj(T obj) {
    this.obj = obj;
    } public T getObj() {
    return obj;
    }
    }
    泛型是需要你指定某种类型的,如果你要A能传递任何对象就要指定泛型为Object,例如:A<Object> a = new A<Object>(); 这样你就能传递任何对象而没有警告了
      

  2.   

    接收到后怎么使用呢?Object.?我要传递HashMap<String, String>!
      

  3.   

    为什么(String)chunk.body;没有警告呢?
      

  4.   


    直接set进去  取的时候get就行了啊  你试了么?
      

  5.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。
      

  6.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。那就只能加注解了 
      

  7.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。那就只能加注解了 怎么加注解?
      

  8.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。那就只能加注解了 怎么加注解?
    @SuppressWarnings("unchecked")可以加在一行代码的前面,只对一行起作用啊,好用!
      

  9.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。那就只能加注解了 怎么加注解?
    @SuppressWarnings("unchecked")可以加在一行代码的前面,只对一行起作用啊,好用!
    嗯 看SuppressWarnings目标范围 @Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
    可以加在除了package和annotation的任何东西前面
      

  10.   


    直接set进去  取的时候get就行了啊  你试了么?import java.util.HashMap;public class NewMainTest<T> {    private T obj;    public void setObj(T obj) {
            this.obj = obj;
        }    public T getObj() {
            return obj;
        }    /**
         * @param jsonArray the command line arguments
         */
        public static void main(String args[]) throws Exception {
            NewMainTest nmt = new NewMainTest<>();
            HashMap<String, String> map = new HashMap<>();
            nmt.setObj(map);
            HashMap<String, String> map1 = (HashMap<String, String>) nmt.getObj();
            //map1.get;
        }
    }
    警告啊。那就只能加注解了 怎么加注解?
    @SuppressWarnings("unchecked")可以加在一行代码的前面,只对一行起作用啊,好用!
    嗯 看SuppressWarnings目标范围 @Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
    可以加在除了package和annotation的任何东西前面多谢了!