泛型是JDK5.0引入的东西,我这里把自己用过和熟悉的跟大家说一下。
package other;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
/**
* 老紫竹JAVA提高教程-泛型的使用(1)。
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
*/
public class Annotation {
public static void main(String[] args) {
test1();
test2();
}
public static void test1() {
// 最常用的集合操作
// 比如这个集合只能放数字
// 当然子类或者接口的实现类都可以
Set<Number> set = new HashSet<Number>();
set.add(1); // 增加Integer类型
set.add(2.2); // 增加Double类型
set.add(new Long(3)); // 增加Long类型
set.add(new Float(4)); // 增加Float类型
set.add(new BigDecimal(5)); // 增加BigDecimal
}
public static void test2() {
// 构造一个自定义的类
// 使用字符串类型
MyObject<String> obj = new MyObject<String>();
// 设置字符串的数据
obj.set("123");
// 获取数据
System.out.println(obj.get());
// 构造一个自定义的类
// 使用Set<String>作为类型
MyObject<Set<String>> obj2 = new MyObject<Set<String>>();
// 设置数据
Set<String> set = new HashSet<String>();
set.add("xyz");
obj2.set(set);
// 获取数据
System.out.println(obj2.get().contains("xyz"));
}
}
/**
* 自定义的注释类。
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
* @param <T>
*/
class MyObject<T> {
// 保存了变量
private T t;
public MyObject() {
}
// 带对应参数的构造器
public MyObject(T t) {
this.t = t;
}
// 设置参数
public void set(T t) {
this.t = t;
}
// 读取参数
public T get() {
return t;
}
}
测试:
可以构建一个子类,看能否作为参数放入泛型。,比如
class MyObjectSub<T> extends MyObject<T>{
}
这次就说这么多吧。泛型的使用可以在编译期对程序的正确性进行检查,提高系统的稳定性,但一定程度的减少了灵活性。