为了账号安全,请及时绑定邮箱和手机立即绑定

查询qpplication的属性时候出现大量java.util.Collections$2@4032423之类的死循环

查询qpplication的属性时候出现大量java.util.Collections$2@4032423之类的死循环

正在回答

4 回答

    application中的属性有<%

     Enumeration ap=application.getAttributeNames();

     while(ap.hasMoreElements()){

    out.println(ap.nextElement());

     }

   %>

个人看法:你的写法直接调用ap的tostring()方法,指针(?不知道是不是指针)位置没变。

0 回复 有任何疑惑可以回复我~

以下是我测试的结果截图:

https://img1.sycdn.imooc.com//5bc5eceb0001762c05510406.jpg

0 回复 有任何疑惑可以回复我~

修改代码如下:

<%
    Enumeration ap = application.getAttributeNames();
    while (ap.hasMoreElements()) {
        out.println(ap.nextElement()+"<br>");
    }
%>


0 回复 有任何疑惑可以回复我~
#1

Kambitious 提问者

看了下,应该是二楼说的比较准确,我一直没有取下一个元素,导致条件一直为ture所以无限循环了。
2018-10-16 回复 有任何疑惑可以回复我~
#2

CNSDHH 回复 Kambitious 提问者

嗯,二楼说的对,因为如果你只打印 ap 对象时,它默认是执行了 ap 的 toString() 方法,所以才会输出对象本身的字符串描述。而 toString() 方法的源码如下: return getClass().getName() + "@" + Integer.toHexString(hashCode());
2018-10-16 回复 有任何疑惑可以回复我~
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
下面是我的代码

    application中的属性有<%

     Enumeration ap=application.getAttributeNames();

     while(ap.hasMoreElements()){

    out.println(ap);

     }

   %>


0 回复 有任何疑惑可以回复我~
#1

CNSDHH

看来你是在循环体中直接打印了【getAttributeNames()】方法,你把【out.println(ap)】修改成【out.println(ap.nextElement()+"<br>")】即可。
2018-10-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

查询qpplication的属性时候出现大量java.util.Collections$2@4032423之类的死循环

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信