泛型:只在程序编译阶段起作用,给编译器参考的,泛型的优点就是统一了集合中的元素类型,取出元素时不太需要大量地向下转型。但是也会导致集合中的元素缺乏多样性!
package com.javastudy.example09;
import javax.swing.text.html.HTMLDocument;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class FanXing {
public static void main(String[] args) {
//不使用泛型
List list=new ArrayList();
list.add(new Bird());
list.add(new Cat());
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
//不使用泛型 向下转型
if(obj instanceof Bird){
Bird x=(Bird)obj;
x.move();
}
if(obj instanceof Cat){
Cat x=(Cat)obj;
x.move();
}
}
System.out.println("====================");
//使用泛型
List<Bird> list2=new ArrayList<Bird>();
list2.add(new Bird());
//list2.add(new Cat()); 错误,不兼容
Iterator<Bird> it2=list2.iterator();
while(it2.hasNext()){
Bird b=it2.next();
b.move();
}
//泛型的自动类型推断
List<Cat> list3=new ArrayList<>();
list3.add(new Cat());
//list3.add(123); 错误
}
}
class Bird{
public void move(){
System.out.println("bird fly");
}
}
class Cat{
public void move(){
System.out.println("cat floot");
}
}
运行截图
自定义泛型与增强for循环
package com.javastudy.example09;
import java.util.ArrayList;
import java.util.*;
public class DiyFanX_ForEach<c123>{
public void doS(c123 x){
System.out.println(x);
}
public static void main(String[]args){
DiyFanX_ForEach<String> diy=new DiyFanX_ForEach();
diy.doS("123");
//增强for循环
System.out.println("=================");
List<String> list=new ArrayList<>();
list.add("123");
list.add("555");
list.add("666");
//遍历
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("=================");
for (String s:list) {
System.out.println(s);
}
}
}
运行截图
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/278444.html