和风细雨

世上本无难事,心以为难,斯乃真难。苟不存一难之见于心,则运用之术自出。

泛型类(Generic Class)

C++模版(Template)类在Java中的体现-泛型类

泛型类是C++模版(Template)类思想在java新版本(1.5)中的应用体现.当对类型相同的对象操作时泛型是很有用的,但其中对象的具体类型直到对类实例化时才能知道.这种方式非常适合于包含关联项目的集合或设计查找的类.

泛型类的使用示例一

/**
 * 泛型类示例一,成员变量为链表,T可以指代任意类类型.
 * @author sitinspring
 *
 * @date 2007-12-28
 */
public class Service<T>{
  // 元素为T的链表
  private List<T> elements;
 
  /**
   * 构造函数,这里无须指定类型
   *
   */
  public Service(){
    elements=new ArrayList<T>();
  }
 
  /**
   * 向链表中添加类型为T的元素
   * @param element
   */
  public void add(T element){
    elements.add(element);
  }
/**
   * 打印链表中元素
   *
   */
  public void printElements(){
    for(T t:elements){
      System.out.println(t);
    }
  }
 
/**
   * 使用示例
   * @param args
   */
  public static void main(String[] args){
    // 创建Service类的示例memberService
    Service<Member> memberService=new Service<Member>();
   
    // 向memberService中添加元素
    memberService.add(new Member("Andy",25));
    memberService.add(new Member("Bill",24));
    memberService.add(new Member("Cindy",55));
    memberService.add(new Member("Felex",35));
   
    // 打印memberService中诸元素
    memberService.printElements();
  }
}

泛型类的使用示例二

/**
 * 泛型类示例二,成员变量为哈希表,k,v可以指代任意类类型.
 * @author sitinspring
 *
 * @date 2007-12-28
 */
public class ServiceHt<K,V>{
  private Map<K,V> elements;
 
  /**
   * 向elements中添加元素
   * @param k
   * @param v
   */
  public void add(K k,V v){
    // 如果elements为空则创建元素
    if(elements==null){
      elements=new Hashtable<K,V>();
    }
   
    // 向elements中添加键值对
    elements.put(k, v);
  }
 /**
   * 打印哈希表中的元素
   *
   */
  public void printElements(){
    Iterator it=elements.keySet().iterator();
   
    while(it.hasNext()){
      K k=(K)it.next();
      V v=elements.get(k);
     
      System.out.println("键="+k+" 值="+v);
    }
  }

  /**
   * 使用示例
   * @param args
   */
  public static void main(String[] args){
    // 创建Service类的示例memberService
    ServiceHt<String,Member> memberService=new ServiceHt<String,Member>();
   
    // 向memberService中添加元素
    memberService.add("Andy",new Member("Andy",25));
    memberService.add("Bill",new Member("Bill",24));
    memberService.add("Cindy",new Member("Cindy",55));
    memberService.add("Felex",new Member("Felex",35));
   
    // 打印memberService中诸元素
    memberService.printElements();
  }
}

posted on 2008-03-03 22:55 和风细雨 阅读(610) 评论(0)  编辑  收藏 所属分类: J2SE


只有注册用户登录后才能发表评论。


网站导航: