源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JDK 1.5之Generics

  • 时间:2020-02-17 04:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JDK 1.5之Generics
Generics 是JDK 1.5 一个最重要的特性,主要用来处理Collection。   以下代码在JDK 1.5 调试通过。   代码实例1: Demo.java   package maoxiang.examples.jdk15.generics;   import java.util.ArrayList;   import java.util.Collection;   import java.util.HashMap;   import java.util.LinkedList;   import java.util.List;   import java.util.Map;   /**   * @author 毛翔   *   * 演示如何使用Generics 特性。代码来自于 Generics 教程:   * http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf   *   * Generics类似于C++中的模板。   * 区别:   * 1.   * 2.   */   public class Demo {   public static void main(String[] args) {}   /**   * 最简单的用法   */   public void Test1() {   // 以前的用法   //List myIntList = new LinkedList(); // 1   //myIntList.add(new Integer(0)); // 2   //Integer x = (Integer) myIntList.iterator().next(); // 3 需要强制转换   // 1.5 的用法   List myIntList = new LinkedList(); // 1'   myIntList.add(new Integer(0)); //2'   Integer x = myIntList.iterator().next(); // 3'   }   /**   * 匿名字符的用法   */   public void Test2() {   List list = new ArrayList();   //通过匿名字符打印一个集合   Wildcards(list);   Wildcards1();   /*   * 如果 Wildcards2 定义为Wildcards2(List shapes)   * 以下调用错误   */   Wildcards2(list);   }   public void Wildcards(Collection< ? > c) {   // 以前的用法   //Iterator i = c.iterator();   //for (int k = 0; k < c.size(); k++) {   //   log(i.next());    //}   //1.5 的用法   //Collection   for (Object e : c) {   log(e);   }   }   public void Wildcards1() {   //Collection();   //c.add(new Object()); // compile time error   //以上为错误的用法,因为不能确定 c 的类型 ,不能使用add ,但get可以 。正确的用法如下:   ArrayList c = new ArrayList();   c.add("test");   List< ? > list = c;   log(c.get(0));   }   public void Wildcards2(List< ? extends Shape> shapes) {   //List shapes 定义只能接受List shapes,也不能接受 List   for (Shape s : shapes) {   s.draw();   }   //以下写法错误,因为为参数申明为 extends Shpape,无法确定Rectangle 为Shape子类,属于不安全调用   //shapes.add(0, new Rectangle());   Map allDrivers = new HashMap();   Census.addRegistry(allDrivers);   //以下写法允许,因为drivers明确定义,   List drivers = new ArrayList();   Census.add(drivers);   }   /**   * Generic Methods 的用法   *   */   public void Test3() {   //适用于各种类型的函数   Object[] oa = new Object[100];   Collection
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部