gpt4 book ai didi

java - 在java中是否可以在运行时获取对象的声明名称?

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:44 26 4
gpt4 key购买 nike

假设我在代码中某处有一个按钮:“JButton closeButton”。我不知道它叫做“closeButton”,但这正是我想知道的。

在运行时,该按钮被点击,一旦它被点击,我可以通过反射和 AWT api 找到很多关于它的信息 - 但我不能做的是找出它在哪里 - 它在代码中是如何调用的,它声明为什么名称(“closeButton”)。

是否可以从 JVM 中找到它?

有没有一种方法可以在运行时保留实例的名称来编译和运行代码?

是否有某种类型的“javaagent”(如果可能的话是免费的)可以帮助我解决这种情况?

谢谢

编辑(美国东部时间 14:23):

我以按钮为例,但它可以是任何类型的组件,可以保存值并附加 ActionListeners。我可以通过反射获取有关该组件的所有信息,但我无法在代码中找到它。即使有 10 个组件已用相同的名称声明,这仍然给我一个线索,我可以消除可能性。

最佳答案


import java.lang.reflect.*;<p></p>

<p>public class field1 {
private double d;
public static final int i = 37;
String s = "testing";</p>

<pre><code> public static void main(String args[])
{
try {
Class cls = Class.forName("field1");

Field fieldlist[]
= cls.getDeclaredFields();
for (int i
= 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
System.out.println("name
= " + fld.getName());
System.out.println("decl class = " +
fld.getDeclaringClass());
System.out.println("type
= " + fld.getType());
int mod = fld.getModifiers();
System.out.println("modifiers = " +
Modifier.toString(mod));
System.out.println("-----");
}
}
catch (Throwable e) {
System.err.println(e);
}
}
</code></pre>

<p>}
</p>

这应该会为您提供该类所有字段的列表。

关于java - 在java中是否可以在运行时获取对象的声明名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com