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

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

JSP 中的 JDK 1.5之Generics


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