package demos2_jeneric;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo04 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("xyz");
list.add("aaa");
//转数组,返回的数组类型指定为object类型
// Object[] obs = list.toArray();
// for (int i = 0; i < obs.length; i++) {
// String str = (String)obs[i];
// }
//转数组,自己准备数组存储元素
//如果准备的数组空间够存,就存入准备的数组中
//如果准备的数组空间不够村,就返回一个新的数组来存储数据
//好处:不需要向下转型
String[] strs = new String[list.size()];
String[] strs2 = list.toArray(strs);
System.out.println(strs == strs2);
for (int i = 0; i < strs2.length; i++) {
String str = strs2[i];
System.out.println(str);
}
}
private static void test03(ArrayList<String> list) {
for(int i = 0; i <= list.size()-1; i++){
String str = list.get(i);
System.out.println(str);
}
}
private static void test02(ArrayList<String> list) {
for(String str: list){
System.out.println(str);
}
}
private static void test01(ArrayList<String> list) {
Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
5 泛型通配符【了解】
概念:在定义一个不确定的数据类型时,不仅可以使用泛型定义,也可以使用泛型的通 配符。
分类: ?:类型通配符,所有的类型 ? extends E:类型通配符上限,表示类型E的子类或者E类型 ? super E:类型通配符下限,表示类型E的父类泛型或者E类型
代码
public static void getList(ArrayList<?> list){
//?:Integer String Number Object
}
public static void getList2(ArrayList<? extends Number> list){
//? extends Number :Integer Number
}
public static void getList3(ArrayList<? super Number> list){
//? super Number:Number Object
}