泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
自定义泛型异常类:
public class MyGeneric<T> {
public void sum(T a,T b){
System.out.println(a.toString()+b.toString());
}
public static void main(String[] args) {
MyGeneric<Integer> m=new MyGeneric<Integer>();
m.sum(4, 4);
MyGeneric<String> m1=new MyGeneric<String>();
m1.sum("lo","ve");
}
}
自定义泛型方法:
public class MyMethod {
public static <T> void print(T [] t){
for (int i = 0; i < t.length; i++) {
System.out.println(t[i]);
}
}
public static void main(String[] args) {
print(new String[]{"lo","ve"});
print(new Integer[]{1,2});
}
}
上限通配符:
import java.util.Hashtable;
/**
* 上限通配符使用
* @author ruanj_000
*
* @param <K>
* @param <V>
*/
public class MyGenericExtends<K extends Number,V> { //限制key键只能为数字
public Hashtable<K, V> ht=new Hashtable<K, V>();
public void put(K k,V v){
ht.put(k, v);
}
public V get(K k){
return ht.get(k);
}
public static void main(String[] args) {
MyGenericExtends<Number, String> ME=new MyGenericExtends<Number, String>();
ME.put(1, "love"); //key键只能为数字 包括整形、浮点型 .....
ME.put(3.5,"sd");
System.out.println(ME.get(1));
System.out.println(ME.get(3.5));
}
}