java泛型总结
来源:互联网 发布:西班牙语字典推荐 知乎 编辑:程序博客网 时间:2024/04/29 18:32
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。如:
public class ExampleA {
public <T> void f(T x) {
System.out.println(x.getClass().getName());
}
public static void main(String[] args) {
ExampleA ea = new ExampleA();
ea.f(" ");
ea.f(10);
ea.f('a');
ea.f(ea);
}
}
输出结果:
java.lang.String
java.lang.Integer
java.lang.Character
ExampleA
使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
需要注意,一个static方法,无法访问泛型类的类型参数,所以,若要static方法需要使用泛型能力,必须使其成为泛型方法。
带两个类型参数的泛型类10.3 带两个类型参数的泛型类
在泛型中,可以声明一个以上的类型参数,只需要在这些类型参数之间用逗号隔开。下面看一个简单的例子。
【例10.2】 带两个类型参数的泛型。
//--------------文件名twoGen.java,程序编号10.3-----------
//本类带有两个类型参数
public class twoGen<T,V>{
T ob1;
V ob2;
//构造方法也可以使用这两个类型参数
twoGen(T o1, V o2){
ob1 = o1;
ob2 = o2;
}
//显示T和V的类型
void showTypes(){
System.out.println("Type of T is "+ob1.getClass().getName());
System.out.println("Type of V is "+ob2.getClass().getName());
}
T getOb1(){
return ob1;
}
V getOb2(){
return ob2;
}
}
下面这个程序演示流如何使用上面这个泛型类。
//--------------文件名simpGen.java,程序编号10.4-----------
public class simpGen{程序的输出结果如下:
public static void main(String args[]){
twoGen<Integer, String> tgObj; //指定类型参数的实际类型
//构造方法中需要再次指定类型参数,同时还要传递实际参数
tgObj = new twoGen<Integer, String>(100,"Hello");
tgObj.showTypes();
int v = tgObj.getOb1();
System.out.println("value: "+v);
String str = tgObj.getOb2();
System.out.println("value: "+str);
}
}
Type of T is java.lang.Integer与只有一个类型参数的泛型相比,本例并没有什么难于理解的地方。Java并没有规定这两个类型参数是否要相同,比如,下面这样来创建对象也是可以的:
Type of V is java.lang.String
value: 100
value: Hello
twoGen<String, String> tgObj = new这样T和V都是String类型,这个例子并没有错。但如果所有的实例都是如此,就没有必要用两个参数
twoGen<Integer, String> ("Hello","World");
0 0
- Java泛型总结
- Java泛型总结
- JAVA泛型总结
- Java泛型总结
- java 泛型总结
- java泛型总结
- JAVA泛型总结
- JAVA泛型总结
- Java-泛型总结
- java泛型总结
- java 泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- Java泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- 学习笔记5
- 电脑内存常见问题处理方法
- 02、老徐教你学C语言基础篇2——C语言摩拳擦掌齐上阵(环境篇)——vc安装
- 配置GRUB 2:调整Ubuntu Server 9.10中的启动程序_/etc/default/GRUB分析
- outlook中实现邮件自动回复
- java泛型总结
- Android开发环境搭建全程和ADT安装,SDK安装问题的解决
- 电源引起的内存报警故障
- mysql加入系统服务
- UML之用例图
- Linux中的命令
- 【设计模式-适配器模式】工作奔6年了。不那么爱技术的技术民工要开始记笔记了
- 重澤兌 (易經大意 韓長庚)
- iOS中UITableView学习笔记(一)