2 sinat 25136209 sinat_25136209 于 2016.09.19 17:12 提问

关于泛型的小问题一个

public class Student {

public String id;

public String name;

public Set<Course> courses;就是这里有疑问

public Student(String id, String name) {
    this.id = id;
    this.name = name;
    this.courses = new HashSet<Course>();
}

}

package com.imooc.collection;

/**

  • 课程类
  • @author Administrator
    *
    */
    public class Course {

    public String id;

    public String name;

    public Course(String id, String name) {
    this.id = id ;

    this.name = name;
    

    }

    public Course() {

    }
    }
    为什么在student类中定义的时候,public Set courses; set中的菱形括号
    可以写Course类??菱形括号里面不是只能写类型么?

6个回答

u013076997
u013076997   2016.09.19 17:46
已采纳

自己创建的Course对象也是属于引用类型的,本质上和String,Integer等都是一样的,你看一下jdk的源码就知道了,String,Integer等也是一个类,只不过是被封装成了jar包而已

sinat_25136209
sinat_25136209 谢谢~~~
大约一年之前 回复
qgfjeahn
qgfjeahn   2016.09.19 17:50

尖括号中放的是数据类型,Course是你建的一个类,它也是一个引用数据类型,Set表示Set集合中只能放入Course类型的对象.这是泛型在集合中最常见的一种体现,保证了集合的安全性,在遍历集合时,取到的对象类型为尖括号中指定的类型,不是Object类型,因此不用强制类型转换.

shihengzhen101
shihengzhen101   Rxr 2016.09.19 17:27

你指的类型是什么?是int?是double?
按照一般理解来说类也是一种类型,只不过是自定义的,当然可以放在<>中了

StaticFinal520
StaticFinal520   2016.09.19 18:25

public Set course;
Course是 Set的泛型,约束 存入到该Set 的数据类型只能是Course类型的,因为泛型可是基本类型也可以是引用类型。
而 Set 是变量 course的类型,这是引用类型,变量的类型可以是引用类型也可以是基本类型。

qq_29594393
qq_29594393   Ds   Rxr 2016.09.19 17:21

不仅仅是类型,也可以是一个对象,

Mr_dsw
Mr_dsw   Ds   Rxr 2016.09.19 22:29

这个是泛型吧!泛型可以

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!