试图找出它并且无法在任何地方找到它。如果一个类在另一个类的方法中实例化,该类在第三个类中实例化,该类在main方法中实例化。我知道最后的陈述是漫长而令人困惑的。所以附上代码以便更好地理解。
public class B {
private String name;
public void setname(String name){
this.name=name;
}
public String getname(){
return name;
}
}
public class C {void method2(){
B b = new B();
b.setname("BBB");
}
}
public class A {void method1(){
B b=new B();
b.setname("AAA");
C c= new C();
System.out.println(b.getname());
}
}
public class Testcase {
/**
* @param args
*/
public static void main(String[] args) {
A a=new A();
a.method1();
}
}
如何从对象c中实例化的对象b引用getname()方法。
答案 0 :(得分:0)
将您的班级实例设置为公开,如下所示:
public B b = new B();
public C c = new C();
现在您可以像这样访问它们:
a.b.c.getName();
答案 1 :(得分:-1)
将类实例设置为public是错误的,因为:
您需要做的是添加wrapper method
。
例如在C类中:
public class C {
private B b;
void method2(){
b = new B();
b.setname("BBB");
}
public void setName(String newName)
{
b.setname(newName);
}
public String getName()
{
return b.getName();
}
}
公共实例方式:
public class C {
public B b = new B();
void method2(){
b.setname("BBB");
}
}
public class A {
public C c = new C();
public B b =new B();
void method1(){
b.setname("AAA");
System.out.println(b.getname());
}
}
public class Testcase {
public static void main(String[] args) {
A a=new A();
a.c.b.setname("tralala");
}
}