作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以从第一个类内部创建的另一个类访问类字段中包含的信息。我放置了一段 Java 代码来显示我想要做的事情。
public class A {
public String c = new String();
B b;
...
...
...
public void doSomething() {
b = new B();
}
}
public class B {
...
...
...
public void retrieveInformationFromA() {
// I need to retrieve the field "c" of A instance that's
// created the B instance
}
}
注意:由于此代码当前设计的限制,我无法在 B 中创建包含 A 类的字段“c”参数的构造函数。由于遗留代码,我必须尽可能避免更改现有代码。
我感谢任何帮助!!
更新:我已经更正了代码,我忘记将 public 修饰符添加到 A 中的字段“c”。
最佳答案
由于您没有指定字段“c”的任何可见性(公共(public)、私有(private)、 protected ),因此隐含了“包保护”,即与类 A 位于同一包中的所有类都可以直接访问该字段。
因此,如果您的类 A 和 B 位于同一个包中,您可以直接从类 B 访问字段“c”。
如果它们不在同一个包中,则无法正常访问,而需要使用反射(这应该是绝对的最后手段):How do I read a private field in Java?
编辑:但是您仍然必须将对 A 类实例的引用传递给 B 类。如果您无法更改 B 类,那么您就完全不走运了。
关于java - 可以从 A 类实例中创建的另一个 B 类实例访问 AN 类实例的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19855956/
我是一名优秀的程序员,十分优秀!