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

JSP
Java 创建cookie和删除cookie
jsp 从web.xml读取连接数据库的参数
jsp 不支持EL表达式,解决办法
jsp 获取客户端的浏览器和操作系统信息
struts2 session 解读
struts2 spring整合fieldError问题
jsp 生成验证码代码
搭建java WEB开发环境和应用
JSP 自定义标签
Java 区分文本中的中英文字符函数
通用JSP页面 jsp入门级文章
jsp struts1 标签实例详解
一个jdbc 测试程序代码
SSH整合中 hibernate托管给Spring得到SessionFactory
jsp SmartUpload 实现上传功能代码
jsp Unsupported encoding: gb2312 错误原因
java Struts2 在拦截器里的跳转问题
jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
Java 项目生成静态页面的代码
jdk与jre的区别 很形象,很清晰,通俗易懂

JSP 中的 JDK 1.5之Generics


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 65 ::
收藏到网摘: 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