枚举<>枚举差异

时间:2017-01-12 09:27:01

标签: java jsp enumeration

我是JSP中的一个重要人物,我对它们之间的区别感到困惑 EnumerationEnumeration<type> 我正在学习这本韩国书籍,其中的示例来源是Enumeration 使用eclipse霓虹灯版本它不起作用。它只在写时才有效 Enumeration<String>。有人可以告诉我差异吗?

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; 

charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>헤더 목록 출력</title>
</head>
<body>
<% 
    Enumeration<String> headerEnum = request.getHeaderNames();
    while(headerEnum.hasMoreElements()){
        String headerName = (String)headerEnum.nextElement();
        String headerValue = request.getHeader(headerName);

%>
<%=headerName %> = <%=headerValue %> <br>
<%
    }
%>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

只需看看the Enumeration documentation即可。另请查看the generic types documentation

使用Enumeration您使用的是Enumeration<Object>,因为它是默认设置。这个<Object>所做的只是指示Enumeration类,在该特定实例中,它调用E的类型(在枚举文档中)将被解析为Object。通过使用<String>发生相同的事情:名为E的类型将被解析为String。

如果您检查nextElement() signature它会返回E.因此,使用EnumerationEnumeration<Object>该方法将返回对象,您需要进行投射:

 String headerName = (String)headerEnum.nextElement();

通过使用Enumeration<String>,该方法将返回一个String,因此您可以直接执行此操作:

 String headerName = headerEnum.nextElement();