关于java的泛型警告这个问题,没懂 ?
问题:
为什么会报 Unchecked call to 'set(T)' as a member of raw type 'org.test.MyList'
这个警告 ?
到底警告我啥?
回答:
你这个警告 "Unchecked call to 'set(T)' as a member of raw type" 一般说明类型参数没有被明确指定。这意味着编译器无法确保在运行时类型安全,因此可能会引发 ClassCastException。
MyList<String> myList = new MyList<>();myList.set("some string");
这样,编译器就能确保类型安全,不会再显示警告。
回答:
定义了类型参数不用怪谁
把T都换成Object就没警告了
回答:
定义了泛型类又不具化,那你为啥要引入T
回答:
简单说就是,你的 MyList
是一个泛型类,它带有一个泛型参数 <T>
,所以你在任何用到这个类的地方,都要明确指明泛型参数的值,比如创建 MyList
对象时,就应该这么写:
MyList<String> mylist1 = new MyList<>();// 上面的 <String> 就是泛型参数的值
如果不这么写,编译器就会因为你没有限制 mylist1 对象的内容类型而对代码进行警告。
如果你确实认为 mylist1 这个对象可以放入任何类型的内容,那么就可以声明为:
MyList<Object> mylist1 = new MyList<>();
这样 mylist1 里面就可以放入任何类型的值了。
以上是 关于java的泛型警告这个问题,没懂 ? 的全部内容, 来源链接: utcz.com/p/945108.html