工作中看到一段代码
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());
}
}
}
308

被折叠的 条评论
为什么被折叠?



