java中的泛型类

n1bvdmb6  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(316)

为什么下面的代码没有抛出错误/异常?

  1. public class UserGenerics <T>
  2. {
  3. T obj;
  4. public UserGenerics(T obj) {
  5. this.obj = obj;
  6. }
  7. }
  8. class UserGenericsRunner
  9. {
  10. public static void main(String[] args) {
  11. UserGenerics<Integer> ug1 = new UserGenerics("StringObject");
  12. UserGenerics ug2 = new UserGenerics(23);
  13. }
  14. }

在第一个对象创建期间,类型参数作为整数传递,但传递给构造函数的对象是字符串对象

2j4z5cfb

2j4z5cfb1#

这是因为您正在创建一个原始类型的示例。
你应该改变

  1. UserGenerics<Integer> ug1 = new UserGenerics("StringObject");

  1. UserGenerics<Integer> ug1 = new UserGenerics<>("StringObject");

  1. UserGenerics<Integer> ug1 = new UserGenerics<String>("StringObject");

编译器会给出一个编译错误。

相关问题