——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
乏型是Java SE 1.5的新特性,在此之前Java是没有乏型概念的。乏型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
在Java1.5之前,没有乏型的时候:
class Test {
public static void main(String[] args) {
Hashtable h = new Hashtable();
h.put(new Integer(0), "value");
String s = (String)h.get(new Integer(0));
System.out.println(s);
}
}
使用的是强制类型转换,而之后则:
class Hashtable<Key, Value> {
...
Value put(Key k, Value v) {...}
Value get(Key k) {...}
}
class Test {
public static void main(String[] args) {
Hashtable<Integer, String> h = new Hashtable<Integer, String>();
h.put(new Integer(0), "value");
String s = h.get(new Integer(0)); System.out.println(s);
}
}
乏型类
定义一个乏型类
class Text<T>{
private T mT; //定义乏型变量,传入的T是什么类型数据,那么这个mT就是什么类型的数据
private T mT1;
}
实例化这个乏型类。
public static void main(String[] s){
Test<String> t = new Test<String>(); //实例化Test
}
这个时候,我们在Test类中的mT和mT1都是String类型。
乏型方法
定义一个乏型方法:
public static <T>void print(T m){
System.out.println(m);
}
这个方法我们能传入任何类型的数据。如:
public static void main(String[] s){
print("Hello Heima !"); //传入字符串数据
print(123456); //传入int数据
print(new Object()); //传入一个类
}
无论我们传入什么,都能成功运行。
乏型接口
其实乏型接口和乏型类定义差不多的,只不过一个使用class关键字,一个是使用interface关键字。
interface face<T>{
T mT;
}
限制乏型类型
当我们想要传入的类型是一个类的子类时,可以使用:
public class Test {
public static void main(String[] args) {
Class<Test2> c = new Class<Test2>();
}
}
class Test2 extends Test{
}
class Class<T extends Test>{
}
T extends Test,那么我们传入的数据类型必须是Test和Test的子类。如果传入String或int就会报错,这样我们就能限制传入的数据类型了。