pxt999 2023-05-30 21:51 采纳率: 0%
浏览 13

Java泛型数组,Java泛型不指定类型参数

public class generics {
    public static void main(String[] args) {
        Student<String> s1 = new Student<>("jack", "优秀");
        Student<Double> s2 = new Student<>("Tom", 95.0);
        Student<Character> s3 = new Student<>("Bob", 'A');

        Student[] students = new Student[3];
        students[0] = s1;
        students[1] = s2;
        students[2] = s3;
    }
}

class Student<T> {
    private String name;
    private T score;

    public Student(String name, T score) {
        this.name = name;
        this.score = score;
    }
}

为什么students数组可以存不同的类型呢?students是被声明成Student类型的数组了吗,这是多态吗,Student<String>、Student<Double>、Student<Character> 都是Student的子类?

如果代码写成:

Student<Object>[] students = new Student[3];
        students[0] = s1;
        students[1] = s2;
        students[2] = s3;

就直接报错了,包括下面这句代码:

Student<String> s1 = new Student<>("jack", "优秀");
Student s = s1;//不会报错
Student<Object> s = s1;//报错

不写类型不是默认Object类型吗,为什么两句话一个报错一个不报错呢。

  • 写回答

2条回答 默认 最新

  • pzzhao 2023-05-30 21:59
    关注

    这个就是java的语法检查,不允许泛型转换,即使你用的是父类。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月30日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表