public class A { private String s; public String getS() { return s; } public void setS(String s) { this.s = s; } public void go() { new B().go(); System.out.println(s); } }public class B { private String s; public String getS() { return s; } public void setS(String s) { this.s = s; } public void go() { //setS(a.getS()) 在这儿a算是调用B的A的instance ,关键是如何得到这个instance(没有显式传入) System.out.println(s); } }public class TEST { public static void main(String[] args) { new A().go(); } }
public void go() { new B().go(); System.out.println(s); } 这个不对吧,会一直递归下去吧。
private String s; public String getS() {
return s;
} public void setS(String s) {
this.s = s;
} public void go() {
new B().go();
System.out.println(s);
}
}public class B { private String s; public String getS() {
return s;
} public void setS(String s) {
this.s = s;
} public void go() {
//setS(a.getS()) 在这儿a算是调用B的A的instance ,关键是如何得到这个instance(没有显式传入)
System.out.println(s);
}
}public class TEST {
public static void main(String[] args) {
new A().go();
}
}
public void go() {
new B().go();
System.out.println(s);
}
这个不对吧,会一直递归下去吧。
在A中定义一个内部类,这个内部类中定义一个方法调用A.go()。
B.go()加一A中内部对象的参数。通过这个对象就可以在B.go()中调用A.go()了
可能应该是这样实现的。不过这样可正的要递归了。
B类不可能得到A类的对象,也不应该能。B不是A的附属,任何对象都可以调用B.GO(),而难道任何对象都要有getS()吗?
如果你确定要B不能脱离A运行,可以这样设计public class A {
private String s; public String getS() {
return s;
} public void setS(String s) {
this.s = s;
} public void go() {
new B().go();
System.out.println(this.s);
}
public class B {
private String s; public String getS() {
return s;
} public void setS(String s) {
this.s = s;
}
public void go() {
setS(A.this.getS());
System.out.println(this.s);
}
}
public static void main(String[] args) {
A a = new A();
a.setS("aa");
a.go();
}
}
aa
aa
符合楼主的需求
A调用B, 在B中得到A的一个实例,你的意思是不知道谁给我的一个实例,但是我却想知道这个实例是属于谁的,那么你只能去猜想谁有可能去调用这个类,现在JDK1.5出现了一个新的技术就是内省与反射,通过实例知道类中的方法,通过类知道类中的方法,虽说不是很懂但这算是一种解决思路吧!