您的位置:首页 > 编程语言 > Java开发

Java基础 通配符?+泛型限定

2015-06-27 00:44 615 查看

基本应用

package test;

import java.util.*;

/*
? 通配符。也可以理解为占位符。
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限

*/

class Test {
public static void main(String[] args) {

ArrayList<String> al = new ArrayList<String>();

al.add("abc1");
al.add("abc2");
al.add("abc3");

ArrayList<Integer> al1 = new ArrayList<Integer>();
al1.add(4);
al1.add(7);
al1.add(1);

printColl(al);
printColl(al1);

}

public static void printColl(ArrayList<?> al) {
Iterator<?> it = al.iterator();

while (it.hasNext()) {
System.out.println(it.next().toString());
}
System.out.println();
}

}


泛型限定

package test;

import java.util.*;

/*
? 通配符。也可以理解为占位符。
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限

*/
class Person {
private String name;

Person(String name) {
this.name = name;
}

public String getName() {
return name;
}
}

class Student extends Person {
Student(String name) {
super(name);
}

}
class Test {
public static void main(String[] args) {

ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("abc1"));
al.add(new Person("abc2"));
al.add(new Person("abc3"));
printColl(al);

ArrayList<Student> al1 = new ArrayList<Student>();
al1.add(new Student("abc--1"));
al1.add(new Student("abc--2"));
al1.add(new Student("abc--3"));
printColl(al1); // ArrayList<? extends Person> al = new
// ArrayList<Student>();error

}

public static void printColl(Collection<? extends Person> al) {
Iterator<? extends Person> it = al.iterator();

while (it.hasNext()) {
System.out.println(it.next().getName());
}
System.out.println();
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: