在这里,我想在 B 类中注册 newBTN 的动作监听器。
注意 :: newBTN 未添加且未初始化。此外,A 类不在我的控制范围内,无法更改。
class A {
private JButton newBTN = null;
}
如何访问 A 类的 newBTN,以便从 B 类注册 newBTN 的动作侦听器?
class B {
}
在这里,我想在 B 类中注册 newBTN 的动作监听器。
注意 :: newBTN 未添加且未初始化。此外,A 类不在我的控制范围内,无法更改。
class A {
private JButton newBTN = null;
}
如何访问 A 类的 newBTN,以便从 B 类注册 newBTN 的动作侦听器?
class B {
}
反射将允许您访问现有类的字段。
警告:这是一种非常糟糕的做法,在开始这条道路之前,您应该尝试探索所有可能的途径。这可能会严重损害您正在访问的类的功能。你必须问自己,“为什么这个领域是私有的?”
public class TestReflection {
public static void main(String[] args) {
new TestReflection();
}
public TestReflection() {
PrivateAccessOnly instance = new PrivateAccessOnly();
try {
Field field = PrivateAccessOnly.class.getDeclaredField("field");
field.setAccessible(true);
System.out.println("Current value = " + field.get(instance));
field.set(instance, new JButton("Testing"));
System.out.println("New value = " + field.get(instance));
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException exp) {
exp.printStackTrace();
}
}
public class PrivateAccessOnly {
private JButton field;
}
}
您需要考虑很多事情。