简述
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。
泛型类
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public class Generic<T>{
private T key;
public Generic(T key) { this.key = key; }
public T getKey(){ return key; } }
|
实例化:
1
| Generic<Integer> genericInteger = new Generic<Integer>(123456);
|
泛型接口
1 2 3
| public interface Generator<T> { public T method(); }
|
实现不指定类型:
1 2 3 4 5 6
| class GeneratorImpl<T> implements Generator<T>{ @Override public T method() { return null; } }
|
实现指定类型:
1 2 3 4 5 6
| class GeneratorImpl<T> implements Generator<String>{ @Override public String method() { return "hello"; } }
|
泛型方法
1 2 3 4 5 6 7
| public static < E > void printArray( E[] inputArray ) { for ( E element : inputArray ){ System.out.printf( "%s ", element ); } System.out.println(); }
|
1 2 3 4 5
| Integer[] intArray = { 1, 2, 3 }; String[] stringArray = { "Hello", "World" }; printArray( intArray ); printArray( stringArray );
|
常用的通配符为: T,E,K,V,?
- ? 表示不确定的 java 类型
- T (type) 表示具体的一个java类型
- K V (key value) 分别代表java键值中的Key Value
- E (element) 代表Element