泛型:标签
package Collection;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;import org.junit.Test;public class ArrayListTest {// 使用泛型@Testpublic void test(){ArrayList list = new ArrayList();list.add(12);list.add(25);list.add(33);//list.add("AA");//报错,不让你进来了,保证数据的安全// 方式一
// for(Integer scores : list){
// int stuScore = scores;//不用强转了
// System.out.println(stuScore);
// }// 方式二Iterator iterator = list.iterator();while(iterator.hasNext()){int scores = iterator.next();System.out.println(scores);}}//在集合中使用泛型@Testpublic void test2(){Map map = new HashMap();map.put("tom", 123);map.put("am", 52);map.put("sd", 13);map.put("twd", 173);// 泛型的嵌套Set> entry = map.entrySet();System.out.println(entry);Iterator> iterator = entry.iterator();while(iterator.hasNext()){Map.Entry e = iterator.next();String key = e.getKey();Integer value = e.getValue();System.out.println(key + "----------" + value);}}}
package File;// 自定义泛型类
public class Order {String orderName;int orderId;// 类的内部结构就可以使用类的泛型T orderT;public Order(){}public Order(String orderName,int orderId,T orderT){this.orderName = orderName;this.orderId = orderId;this.orderT = orderT;}public T getOrderT(){return orderT;}public void setOrderT(T orderT){this.orderT = orderT;}@Overridepublic String toString() {return "Order [orderName=" + orderName + ", orderId=" + orderId + ", orderT=" + orderT + "]";}}
package File;import org.junit.Test;public class GenericTest1 {@Testpublic void test1(){//Order order = new Order(); //没有指明类的泛型,则此泛型类型为Object// 建议写上,这样第三个参数就是String类型Order order1 = new Order("OrderAA",123,"string");}}
泛型方法是在方法中出现了泛型的结构,泛型的参数与类的泛型参数没有任何关系。即泛型方法所属的类是不是泛型类无关
泛型方法,可以声明为静态,因为泛型参数是在调用方法时确定,并非在实例化时确定
类A是类B的父类,G《A》 和 G《B》二者不具备子父类关系,二者是并列关系
List
但A《G》 是 B《G》 的父类
通配符:?
G《A》和G《B》 的共同父类是G《?》
@Test
public void test2(){List
? extends Person (<=Person)
? super Person (>=Person)
对于第二个,可以add(Person 及 Person的子类)
上一篇:STC 51单片机61——呼吸灯
下一篇:2.MyBatis环境搭建