Java中的泛型类

Java中的泛型类,java,class,generics,types,parameters,Java,Class,Generics,Types,Parameters,为什么下面的代码没有抛出错误/异常 public class UserGenerics <T> { T obj; public UserGenerics(T obj) { this.obj = obj; } } class UserGenericsRunner { public static void main(String[] args) { UserGenerics<Integer> ug1 = new

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

public class UserGenerics <T>
{
    T obj;
    public UserGenerics(T obj) {
        this.obj = obj;
    }
}

class UserGenericsRunner
{
    public static void main(String[] args) {
        UserGenerics<Integer> ug1 = new UserGenerics("StringObject");
        UserGenerics ug2 = new UserGenerics(23);      
    }
}
公共类用户泛型
{
T-obj;
公共用户泛型(T obj){
this.obj=obj;
}
}
类UserGenericsRunner
{
公共静态void main(字符串[]args){
UserGenerics ug1=新的UserGenerics(“StringObject”);
UserGenerics ug2=新的UserGenerics(23);
}
}

在第一个对象创建过程中,类型参数作为整数传递,但传递给构造函数的对象是字符串对象,这是因为您正在创建原始类型的实例

你应该改变

UserGenerics<Integer> ug1 = new UserGenerics("StringObject");
UserGenerics ug1=新的UserGenerics(“StringObject”);

UserGenerics ug1=新的UserGenerics(“StringObject”);

UserGenerics ug1=新的UserGenerics(“StringObject”);
编译器将给出一个编译错误

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