为什么我可以使用Interface Enumeration方法而不覆盖它们?

时间:2017-04-18 09:05:36

标签: java jsp interface

我创建了一个使用接口Enumeration的jsp。 jsp工作正常,但我不明白我的程序如何知道如何使用hasMoreElements()nextElement()方法,如果我没有覆盖它们,我就不会# 39;使用覆盖它们的类。一个接口方法应该没有正文,对吗?

<%@page import="java.util.*"%>
<%
    char respuesta;
    int g=0; //Gryffindor
    int r=0; //Ravenclaw
    int h=0; //Hufflepuff
    int s=0; //Slytherin
    String valorParametro;

    Enumeration e=request.getParameterNames();
    try {
        while (e.hasMoreElements()) {
            valorParametro=request.getParameter(e.nextElement().toString());
            respuesta=valorParametro.charAt(0);
            switch(respuesta) {
                case 'A':
                out.write("Un punto para Gryffindor...<br>");
                g++; break;
                case 'B':
                out.write("Un punto para Ravenclaw...<br>");
                r++; break;
                case 'C':
                out.write("Un punto para Hufflepuff...<br>");
                h++; break;
                case 'D':
                out.write("Un punto para Slytherin...<br>");
                s++; break;
            }
        }
    } catch (Exception ex) {out.write(e.toString());}

    out.write("Y tu casa es...");
    if (g>r && g>s && g>h)  {out.write(" ¡GRYFFINDOR!");}
    else if (r>g&&r>s&&r>h) {out.write(" ¡RAVENCLAW!");}
    else if (h>g&&h>s&&h>r) {out.write(" ¡HUFFLEPUFF!");}
    else if (s>g&&s>r&&s>h) {out.write(" ¡SLYTHERIN!");}
    else {out.write(" Chico, el sombrero no sabe qué decir.");}
%>

1 个答案:

答案 0 :(得分:4)

就行:

 <form>
    <div class="food">
        <input type="text" name="" value="" />
        <input type="text" name="" value="" />
        <textarea name="" value=""></textarea>
    </div>

    <div class="drinks">
        <input type="text" name="" value="" />
        <input type="text" name="" value="" />
        <textarea name="" value=""></textarea>
    </div>

    <div class="gifts">
        <input type="text" name="" value="" />
        <input type="text" name="" value="" />
        <textarea name="" value=""></textarea>
    </div>
    </form>
Enumeration e=request.getParameterNames(); 对象的

getParameterNames返回request接口的实现。当返回的对象实现Enumeration时,可以在代码中调用此接口的方法。

没有必要知道具体的类实例返回Enumeration

足以知道返回的结果实现了getParameterNames()接口,并且可以使用Enumeration接口方法获得结果。

此外,与您的问题没有直接关系,建议在这种情况下使用接口类型不要坚持具体的类实现。

例如,最好替换这种声明:

Enumeration

这种声明:

ArrayList<String> myList = new ArrayList<>();

它使您的代码更灵活,更易于维护。您可以更改List<String> myList = new ArrayList<>(); myListLinkedList等)的具体实现,而无需更改其类型(Stack)。