本文共 1017 字,大约阅读时间需要 3 分钟。
的确,您的
link没有指定将您的方法作为静态方法的合成类的确切性质(如名称).
我试图让代码段正在执行的类
jshell> new Exception().printStackTrace()
java.lang.Exception
at REPL.$JShell$17.do_it$($JShell$17.java:8)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@9-ea/Method.java:531)
at jdk.internal.jshell.remote.RemoteAgent.commandLoop(jdk.jshell@9-ea/RemoteAgent.java:124)
at jdk.internal.jshell.remote.RemoteAgent.main(jdk.jshell@9-ea/RemoteAgent.java:62)
jshell> Thread.currentThread().getStackTrace()[1].toString()
$15 ==> "do_it$(java:18)"
jshell> Thread.currentThread().getStackTrace()[1].getClassName()
$16 ==> ""
但是您可以看到,信息不是堆栈跟踪.
规避它的最简单的方法是将自己的方法定义为一个静态方法:
jshell> class B { static A id(A x) {return x;} }
这允许你打电话
jshell> String y = B.id("foo");
并得到所需的结果.
转载地址:https://blog.csdn.net/weixin_35600779/article/details/114575395 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!