关于java泛型
2011-02-02 17:12
453 查看
泛型的主要用途,就是用来指定集合要持有什么类型的对象,并由编译器来保证类型的正确性。它实现了参数化类型,使集合可以存储属于同一类型的元素。
通过一个例子来解释:
public class Test<T> {
private T t;
public Test<(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
不使用泛型:
public class Demo1 {
public static void main(String args[]) {
Test str = new Test("Hello Java!");
Test dou = new Test(new Double("10"));
Test obj = new Test(new Object());
System.out.println("str: "+(String)str.getT());
System.out.println("dou: "+(Double)dou.getT());
System.out.println("obj: "+(Object)obj.getT());
}
}
因为java的泛型是处在编译层的,JVM在对待泛型数据的时候,把它们看成是Object类型。
在使用这些元素时,JVM会自动进行类型转换。
使用泛型:
public class Demo2 {
public static void main(String args[]){
Test<String> str =new Test<String>("Hello world!");
Test<Double> dou =new Test<Double>(new Double("25"));
Test<Object> obj =new Test<Object>(new Object());
System.out.println("str: "+str.getT());
System.out.println("dou: "+dou.getT());
System.out.println("obj: "+obj.getT());
}
}
class Test<T> 声明了一个泛型类,这个T没有任何限制,实际上相当于 class Test<T extends Object>
经比较可知:
集合使用泛型后,元素类型得以明确,避免了手动类型转换的过程,提高了效率。
通过一个例子来解释:
public class Test<T> {
private T t;
public Test<(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
不使用泛型:
public class Demo1 {
public static void main(String args[]) {
Test str = new Test("Hello Java!");
Test dou = new Test(new Double("10"));
Test obj = new Test(new Object());
System.out.println("str: "+(String)str.getT());
System.out.println("dou: "+(Double)dou.getT());
System.out.println("obj: "+(Object)obj.getT());
}
}
因为java的泛型是处在编译层的,JVM在对待泛型数据的时候,把它们看成是Object类型。
在使用这些元素时,JVM会自动进行类型转换。
使用泛型:
public class Demo2 {
public static void main(String args[]){
Test<String> str =new Test<String>("Hello world!");
Test<Double> dou =new Test<Double>(new Double("25"));
Test<Object> obj =new Test<Object>(new Object());
System.out.println("str: "+str.getT());
System.out.println("dou: "+dou.getT());
System.out.println("obj: "+obj.getT());
}
}
class Test<T> 声明了一个泛型类,这个T没有任何限制,实际上相当于 class Test<T extends Object>
经比较可知:
集合使用泛型后,元素类型得以明确,避免了手动类型转换的过程,提高了效率。
相关文章推荐
- JAVA关于泛型的笔记
- Java学习中关于泛型1
- 关于对 java 泛型中T extendscompareable<? super T>理解
- 关于Java泛型使用的问题记录
- 关于java泛型擦除反编译后泛型会出现问题
- 关于Java泛型的一些问题
- 关于java1.5的泛型(general)的学习
- 关于 Java 泛型的一些有趣的例子
- 关于java中的泛型的总结篇
- 关于Java泛型的若干问题
- 关于Java泛型深入理解总结
- 黑马程序员---转载关于java泛型的详细介绍
- 【Java】关于泛型:泛型类、泛型接口和泛型方法
- java 泛型问题 关于警告XXX is a raw type
- 【ThinkingInJava】37、关于泛型数组
- 关于Java泛型深入理解小总结
- 关于Java泛型的面试题
- Java基础系列:(1)关于泛型的简单总结
- 关于Java中的泛型
- 关于java泛型