styleyan/javaNote

泛型

Opened this issue · 3 comments

java泛型中的标记含义:

  • T: Type(表示一个具体的java类)
  • E: Element(在集合中使用,因为集合中存放的是元素)
  • K / V: Key Value(分别代表java键值中的Key Value)
  • ?: 表示不确定的java类型

静态方法不能引用泛型类型,必须定义其他类型来实现"泛型"

public static <K> Pair<K> create(K first, K last) { ... }

参考链接地址

List,List,List<?>区别

// 指定集合元素只能是T类型
ArrayList<T> al = new ArrayList<T>();
// 集合元素可以是任意类型,这种没有意义,一般是方法中,知识为了说明用法
ArrayList<?> al2 = new ArrayList<?>(); 
// 泛型的限定:  ? extends E: 接收E类型或者E的子类型,? super E: 接收E类型或者E的父类型
ArrayList<? extends E> al=new ArrayList<? extends E>();

Class,Class<?>区别

泛型方法

public <T> T showKeyName(Generic<T> container) {
   .....
}

public与返回值之间的必不可少,这表明这是一个泛型方法,并且声明了一个泛型,