1. 泛型的简单使用: 1.5才有
List<String> data = new ArrayList<String>();
data.add("xiaoer");
data.add("20");
Iterator<String> iterator = data.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
泛型是发生在编译时期的检查 防止强转等类型不一致报错
2泛型的移除和补偿
移除:
泛型会在运行时期移除因为java的类转换器(1.5)引入需要兼容 所以要移除泛型但是如何一旦移除了泛型 如果我们没有进行强转操作可能会调用一些无法调的方法 因此需要补偿
补偿:
系统会通过getclass()等获取对象真正的类型自动进行类型的转换
3.泛型的例子 Treeset(集合中不允许存在相同的元素通过接口Comparable 中的方法来比较 返回0就是相同否则不同)
instanceof 是否是某个类的实例
public class fanxing {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<Person>();
set.add(new Person("xiaoer11", 20));
set.add(new Person("xiaoer11", 20));
set.add(new Person("xiaoer3", 20));
set.add(new Person("xiaoer4", 20));
Iterator<Person> iterator = set.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next().toString());
}
}
}
class Person implements Comparable<Object>{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
或者自定义一个比较器
TreeSet<Person> set = new TreeSet<Person>(new myComparator());
public class myComparator implements Comparator<Person> {
public int compare(Person o1, Person o2) {
return 0;
// 在这里进行比较
}
}
4.泛型类eg:
person<String> p = new person<String>()
这样可以显示的指定类中要操作的元素的类型 在编译时期就可以检测出类型的问题 防止类型强转等带来的问题
5.泛型方法:
可以显示的指定参数类型
void walk<T>(T meter);
6.泛型接口
可以得到接口中的方法的参数等确定具体的类型 List<T>等