从 request.getParameterNames() 到 Enumeration

工作中看到一段代码

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());
		}
	}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值