Java 如何引用在另一个类中创建的实例
我在类a中有一个函数,我想更改类B中某个字段的值 类C有myJava 如何引用在另一个类中创建的实例,java,Java,我在类a中有一个函数,我想更改类B中某个字段的值 类C有mymain(),并创建类B和类a的新实例。类a来自API,它们的函数之一是侦听器函数。我希望该侦听器函数能够更改类B的字段,但当我为侦听器函数编写代码时,它无法识别类B的实例 如何引用该实例 示例代码: public class A { public void listenermethod(){ //can't reference Binstance <------- } } publi
main()
,并创建类B和类a的新实例。类a来自API,它们的函数之一是侦听器函数。我希望该侦听器函数能够更改类B的字段,但当我为侦听器函数编写代码时,它无法识别类B的实例
如何引用该实例
示例代码:
public class A {
public void listenermethod(){
//can't reference Binstance <-------
}
}
public class B {
B.field = 1;
}
public class C {
A Ainstance = new A();
B Binstance = new B();
}
公共A类{
公共void listenermethod(){
//无法引用BinInstance您必须能够修改类C和类A。将类A方法重写为
public void listenermethod(Binstance theB){
theB.something = "some_value";
}
现在,当您调用类A时,传入BinInstance。如果您不能修改类A,那么您的任务就无法完成。您应该给类A一个私有B字段,然后您可以根据需要从该字段上的B调用公共方法。如果您需要在单独的类(C)中创建A和B实例你应该给你的A类public void setB(B B)
setter方法
A.java
class A {
private B b;
public void setB(B b) {
this.b = b;
}
public void listenerMethod() {
if (b != null) {
b.someBMethod();
}
}
}
C.java
public class C {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setB(b);
a.listenerMethod();
}
}
根据定义,实例属于对象。因此,您的类A必须有一个类B的对象作为成员:
Class A{
private B instance_of_b;
}
现在您可以通过以下方式访问B成员:
instance_of_b.member
或者属于类B的字段可以是静态的,然后A可以通过类访问它
B.member
还要确保您知道访问者关键字(private、protected、[friendly]、public)的含义。是的,它是对实例b的引用。@Tanner isif(b!=null)
考虑到他在C类中设置了它,甚至是必要的吗?@Chowza这是一个很好的做法,因为你永远不能确定b
不是空的。@Chowza:如果你通过A的构造函数传入b,并确保A没有默认构造函数,即在b实例中没有传递的构造函数,那么空检查可能就没有必要了。