泛型(Generic)
介绍:泛型是JDK1.5中引入的一个新特性,其本质是把类型作为参数进行传递。
1.泛型的常见形式
1.1泛型类
例子: 泛型类如下:
public class Generic<T> {
T t;
public T show(T t) {
System.out.println(t);
this.t = t;
return t;
}
}
主函数调用如下:
public static void main(String[] args) {
Generic<String> generic = new Generic<String>();
generic.show("niwota");
Generic<Integer> generic1 = new Generic<Integer>();
generic1.show(1444);
}
1.2 泛型接口
不多说了直接看例子
接口:
public interface Animal<T> {
T service(T t);
}
猫类:
public class Cat implements Animal<String> {
@Override
public String service(String t) {
return "我是一只"+ t + "猫";
}
}
狗类
public class Dog<T> implements Animal<T> {
@Override
public T service(T t) {
return t;
}
}
主函数:
Animal<String> animal = new Cat();
System.out.println(animal.service("花"));
Animal<String> dog = new Dog<String>();
System.out.println(dog.service("做人好难,我想当狗"));
1.3 泛型方法
例子:
public class Pig {
int age;
String name;
public <T> void show1(T t){
System.out.println(t);
}
public <T> T show2(T t){
return t;
}
}
主函数:
Pig pig = new Pig();
pig.show1(100);
pig.show1("niwota");
System.out.println(pig.show2("猪"));
2.好处
- 提高代码重用性
- 提高安全性
3.注意事项
- 不能在类中声明静态属性和静态常量
- 不能在类中初始化对象或者数组,但是可以声明二者。(不能确定类型,无法确定开辟空间)
- 不能使用泛型声明参数个数相同的重载方法。如果有两个泛型<T,E>,则void show(T t); void show(E e); 是不可以的。
- 使用不同实际类型创建出的泛型对象的引用不可以相互赋值。就是Integer创建的泛型,不能给String创建的泛型赋值,很显而易见的。
最后java里面所有的集合都使用了泛型。
|