在这里,我想在B类中注册newBTN的动作监听器。
注意:: newBTN未添加且未初始化。此外,A级不受我的控制,无法更改。
class A {
private JButton newBTN = null;
}
如何访问A类的newBTN,以便从B类注册newBTN的动作监听器?
class B {
}
答案 0 :(得分:2)
Reflection将允许您访问现有类的字段。
警告:这是非常不良做法,您应该尝试在开始这条路径之前探索所有可能的途径。这可能严重会破坏您正在访问的类的功能。你必须问自己,“为什么这个领域是私人的?”
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;
}
}
答案 1 :(得分:0)
您需要考虑很多事情。