工作中看到一段代码
Enumeration<String> enumeration = request.getParameterNames();然后网上查了一下,发现是实现Enumeration接口之后,就可以构造一种数据结构,可以用来遍历数据。
而这里的request就是javax.servlet.http.HttpServletRequest,HttpServletRequest.getParameterNames()的返回类型就是Enumeration
然后模仿着写了一个测试方法,对Enumeration有了较为直观的理解
首先是实现 Enumeration 接口,使用了泛型
MyEnumeration
package com.demo.enumeration;import java.util.Enumeration;/* *实现 Enumeration 接口 构造新的类型 */public class MyEnumeration<E> implements Enumeration<E> { int count; // 计数器 int length; // 存储的数组的长度 Object[] dataArray; // 存储数据数组的引用 /** * * @param count 起始计数 为0即可从第一个开始计数 * @param length 参数树木 * @param dataArray 保存具体参数的数组 */ MyEnumeration(int count, int length, E[] dataArray) { this.count = count; this.length = length; this.dataArray = dataArray; } @Override public boolean hasMoreElements() { return count<length; } @SupPRessWarnings("unchecked") @Override public E nextElement() { return (E) dataArray[count++]; }}然后是测试类
package com.demo.enumeration;import java.util.Enumeration;import org.junit.Before;import org.junit.Test;/** * * @主题 Enumeration 列举 * @描述 Enumeration 是一个接口,在继承其之后可以遍历里面的数据 * @举例 * import javax.servlet.http.HttpServletRequest; * //获取请求参数KEY集合 * Enumeration<String> enumeration = request.getParameterNames(); * @author Jecket */public class EnumerationTest { //声明一个 MyEnumeration 对象 private MyEnumeration<String> MyEnumeration; /** * 先实例化一个构造类型,以便在测试方法中直接遍历内容 */ @Before public void beforetest(){ //实例化一个 String[] dataArray=new String[]{"参数1","参数2","参数3"}; MyEnumeration=new MyEnumeration<String>(0, 3, dataArray); } @Test public void test1(){ Enumeration<String> e=MyEnumeration; while(e.hasMoreElements()){ System.out.println(e.nextElement()); } }}
新闻热点
疑难解答