请JAVA大神帮我看看这个程序有什么问题

万分感谢,实在查不出哪里出错了,初学者java基础很差,代码是java核心技术上抄的出错信息如下Exceptioninthread"main"java.lang.Stac... 万分感谢,实在查不出哪里出错了,初学者java基础很差,代码是java核心技术上抄的
出错信息如下
Exception in thread "main" java.lang.StackOverflowError
at jixusen_test.TraceHandler.invoke(proxy_test.java:34)
at com.sun.proxy.$Proxy0.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
以下重复错误出现很多次,是不是死循环什么的啊,求大神解答
展开
 我来答
职场无度
推荐于2016-01-29 · TA获得超过161个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:97.2万
展开全部
sun公司对该异常的解释如下:

当应用程序递归太深而发生堆栈溢出时,抛出该错误。

所以你只需要检查你之前的代码,是否哪个地方使用了递归,看看这个递归有没有终止的条件,就可以了。

你这个程序最下面明显是一个递归啊,你看一看你这个递归有终止的条件吗。
更多追问追答
追问
我打断点到System.out.print(proxy);就执行不下去了,错误也一直报的这个地方,难道这里有问题,但是怎么都看不出有递归啊,麻烦大神帮我看看
大神说最后是递归,我想知道这里不是参数和上面的invoke不一样吗,有什么讲究吗
追答
你下面的 invoke方法,接受了三个参数,一个object对象,一个本方法的对象,还有一个object数组。

然后你又在最下面 return了这个方法的对象,调用了这个方法,把两个参数传递了过去,然后程序接着调用这个方法,又到了return那里,再次调用了这个方法,如此,反反复复。

这种就称之为递归。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hell117
2019-05-18 · TA获得超过219个赞
知道答主
回答量:132
采纳率:0%
帮助的人:35.7万
展开全部
你光标所在的那一行,syso(proxy)相当于syso(proxy.toString()),然后代理对象又来执行这个invoke方法,如此循环下去,就内存溢出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式