Java中的泛型类



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

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);      
}
}

在第一个对象创建过程中,类型参数作为Integer传递,但传递给构造函数的对象是String对象

这是因为您正在创建一个原始类型的实例。

您应该更改

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

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

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

并且编译器将给出编译错误。

最新更新