//带有泛型的类:
/**
* ArrayList
* E:Element元素,实际思想就是一个变量而已
* ArrayList<Integer>, E 接受到的类型,就是Integer类型
* public class ArrayList <E>{
* public boolean add(E e){
*
* }
* }
* */
//带有泛型的接口
/**
* public interface List<E>{
* abstract boolean add(E e)
* }
* */
//实现类,先实现接口 ,不理会泛型
/**
* public class ArrayList <E> implements List<E>{
*
* }
* 好处:调用者new ArrayList<String > 后期创建对象的时候可以自己指定数据类型
* */
public class Pass { static class human extends Pass{ private String name; private int age; @Override public String toString() { return "human{" + "name='" + name + '\'' + ", age=" + age + '}'; } public human(String name, int age) { this.name = name; this.age = age; } } static class Xiao extends Pass{ private String name; @Override public String toString() { return "Xiao{" + "name='" + name + '\'' + '}'; } public Xiao(String name) { this.name = name; } } public static void main(String[] args) { List<human> name=new ArrayList<>(); HashSet<Xiao> srr=new HashSet<>(); name.add(new human("情为之所困",1314)); srr.add(new Xiao("爱为之所迷")); iterator(name); iterator(srr); } // ? extends 共同的父类 -->作用:上限限定泛型 只能通配 Pass或(共同父类的子类对象) // ?super 共同的父类 -->作用:下限限定泛型 只能通配 Pass 或 (共同父类对象) public static void iterator(Collection<? extends Pass> E){ Iterator <? extends Pass>it= E.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } }
转载于:https://www.cnblogs.com/yangnaidong/p/10476732.html