当前位置: 首页 > 图文教程 > 网络编程 > JSP > JDK 1.5之Generics

JSP
Servlet及JSP中的多线程同步问题
使用Ant和Tomcat创建Web应用
如何直接在浏览器内运行SQL命令
Servlet、Jsp中的多国语言显示
html与jsp开发分离技术
通过Jsp发送动态图像
Servlets和JSP Pages最佳实践
学习在JSP中使用JavaBeans
JSP显示内容缓存技巧
应用JDOM处理数据库到XML转换的JSP实现
JSP中tomcat的SQL Server2000数据库连接池的配置
用JSTL实现JSP应用程序快速开发
浅谈4种类型的JDBC驱动程序
怎样设置 JSP 的虚拟目录
Java 中对文件的读写操作之比较
javamail在jsp中调用
jsp中任意文字转Unicode的通用模块
JSP与SQL SERVER的留言本
jspSmartUpload上传下载全攻略
Tomcat5.x中的虚拟主机配置方法

JSP 中的 JDK 1.5之Generics


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 90 ::
收藏到网摘: n/a

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 c 表示
  for (Object e : c) {
  log(e);
  }
  }
  public void Wildcards1() {
  //Collection c = new ArrayList();
  //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