读书人

java类与对象的有关问题

发布时间: 2013-08-16 14:29:57 作者: rapoo

java类与对象的问题
遇到如下一个问题:
假如现在有6个类,分别是A,B,C,D,E,F
在A类里创建了B类的对象(B b=new B();)
在B类里创建了C类的对象(C c=new C();)
在C类里创建了D类的对象— d=new D();)
在D类里创建了E类的对象(E e=new E();)
在E类里创建了F类的对象(F f=new F();)
假设程序从A类一直执行到了F类里。
现在我要从F类里调用D类里的数据,然后再调用B类里的数据,该如何操作?
(原来创建了D类的对象,如果现在要在F类里再创建一个D的对象,就是开辟了一个新的对象空间,原来存储在D类的数据就不能被F类调用到了!用什么更好的办法?????) 类
[解决办法]
像你这种这么多层的调用,在实际项目中很常见,并没有什么问题。需要在F类中调用D类的中的数据,比较常用的方式是一层一层往下传,D传给E,E再传给F。其他的以此类推。
[解决办法]

public class ObjectReferencing {

public static class A {

}

public static class B {

public A a = new A();
}

public static class C {

public B b = new B();
}

public static class D {

public C c = new C();
}

/////////////////////////////////////////////////////////

public static void main(String[] args) {
D d = new D();

System.out.println("c is " + d.c);
System.out.println("b is " + d.c.b);
System.out.println("a is " + d.c.b.a);
}
}


这样的引用都是很正常的。
[解决办法]
A a = new A();
F f = a.b.c.d.e.f;
B b = a.b;
D d = a.b.c.d;
然后就可以调了吧....
------解决方案--------------------


按你目前的设计来看是办不到的,因为你的F类对象没有直接或间接的持有之前创建的D类对象的引用。要想让F对象能找到D的对象,只能在F类里加一个D对象引用作为成员,并且将D对象赋给这个成员;当然也可以间接得到,比如,F里面有C,再通过C找D。
[解决办法]
在每一个类里都加一个域和一个有参构造器,把能够创建它的对象传递进来并存储,不过我不知道这么写的意义是是什么,也不知道对你有没有用,凑合着看一下思路吧


package com.test;

class A {

public void test() {
B b = new B(this);
}

public void print() {
System.out.println("A ...");
}

}

class B {
public A a;

public B(A a) {
this.a = a;
}

public void test() {
C c = new C(this);
}

public void print() {
System.out.println("B ...");
}
}

class C {
public B b;

public C(B b) {
this.b = b;
}

public void test() {
D d = new D(this);
}

public void print() {
System.out.println("C ...");
}
}

public class D {

public C c;

public D(C c) {
this.c = c;
}

public static void main(String[] args) {
D d = new D(new C(new B(new A())));
d.c.b.a.print();
}

}

读书人网 >J2SE开发

热点推荐