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类??菱形括号里面不是只能写类型么?
自己创建的Course对象也是属于引用类型的,本质上和String,Integer等都是一样的,你看一下jdk的源码就知道了,String,Integer等也是一个类,只不过是被封装成了jar包而已
不仅仅是类型,也可以是一个对象,
你指的类型是什么?是int?是double?
按照一般理解来说类也是一种类型,只不过是自定义的,当然可以放在<>中了
尖括号中放的是数据类型,Course是你建的一个类,它也是一个引用数据类型,Set表示Set集合中只能放入Course类型的对象.这是泛型在集合中最常见的一种体现,保证了集合的安全性,在遍历集合时,取到的对象类型为尖括号中指定的类型,不是Object类型,因此不用强制类型转换.
public Set course;
Course是 Set的泛型,约束 存入到该Set 的数据类型只能是Course类型的,因为泛型可是基本类型也可以是引用类型。
而 Set 是变量 course的类型,这是引用类型,变量的类型可以是引用类型也可以是基本类型。
这个是泛型吧!泛型可以