发新话题

老紫竹JAVA提高教程-泛型的使用(1)

泛型是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>{
  
}


这次就说这么多吧。泛型的使用可以在编译期对程序的正确性进行检查,提高系统的稳定性,但一定程度的减少了灵活性。
快乐渡过每一天,减肥坚持每一天



编辑 回复 快速回复 TOP
一点点的跟着学
编辑 回复 快速回复 TOP
发新话题