java - Java 中的泛型类

标签 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 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/

相关文章:

java - java中未使用的异常并从映射中删除对象

c# - 为什么类成员变量的值会改变?

c# - 如何将 Type 变量发送到通用方法?

JavaScript 类变量

java - 我想要通用类的 "Class<T>"和 "Class variable"

c# - 从类型创建泛型类的实例

java - 与原始类型相比,了解方法上的泛型

java - Netty 客户端到服务器消息

java - 无法使用 xoauth 在 javamail 上向 gmail 发送电子邮件

java - 为什么 TomCat 8 不能在我的 Ubuntu 15.04 系统上运行?