为什么下面的代码没有抛出错误/异常?
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");
编译器会给出编译错误。
关于java - Java 中的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65407339/