【发布时间】:2017-02-09 23:46:03
【问题描述】:
从前:
我有一个有很多领域的classA。我通过它们的构造函数将 A 类注入到 B 类和 C 类,因为最后两个需要与 A 类通信。
问题:
所以我已经完成了依赖注入,现在我注意到 B 类和 C 类很伤心,因为它们无法访问 A 类中设置为私有的字段。他们通过 getter 进行了尝试,但 A 类很快变得太胖了,因此两个类都想知道是否有一种方法可以在没有 getter 且不将它们设置为 public 的情况下访问其依赖项的字段。
示例(伪代码!!!):
class A {
private field1 = 1;
private field2 = 2;
private field3 = 3;
private field4 = 4;
private field5 = 5;
private field6 = 6;
}
class B {
public B(A a) {
System.out.print(a.field1);
}
}
class C {
public B(A a) {
System.out.print(a.field2);
}
}
A a = new A();
new B(a);
new C(a);
继承并将字段设置为受保护可以解决问题,但问题是每个孩子都有不同的父母。我不想那样。
所以我的问题是: 如何在没有 getter 或反射的情况下访问依赖项的字段?
【问题讨论】:
-
其次,
private表示私有,这意味着私有字段只能在其类中访问,这意味着您必须创建一个更开放的限制method才能从外部访问它,这意味着Getter... --- 好吧,您可以通过反射来完成它,通过设置为临时访问...但是那如果您的目标是“不让班级膨胀”,那将是非常错误... -
@AndrewL。我知道它无效的java。主线不见了怎么办?私人数据也无法读取……我知道。阅读全文 xD。
-
@Tom 我的另一个想法是将字段设置为“最终和公开”,但这会使它们不可变
-
@Tom 你是对的,对此感到抱歉
-
@AlmightyR 因为它是由注解生成的(所以在编译时) // 作为旁注,还有其他有趣的功能,而不仅仅是 getter/setter
标签: java