Java,如何获取对象的引用

时间:2015-03-26 11:51:49

标签: java class oop

我们说我有3节课; A,B和C. A类和B类在一个包装中。 C在另一个包中。 B有一个返回布尔值的公共函数。

B的对象是在A类中创建的,他可以调用B类的函数。但问题是在CI中想要引用A类创建的B类对象,我不想要在C组中再创建一个B类对象。我怎么能得到它。

示例:B类和A类在同一个包中

B.java

class B
{
     public boolean fun()
     {
          returns boolValue;
     }
}

A.java

class A
{
     B b = new B(); //Creates object of Class B and can access function.
}

C类在另一个包和不同的项目中。

C.java

class C
{
     //How to get the reference of Class B object created in Class A?
}

一旦我得到了对它的引用,我将调用B类的函数来获取值。我尝试编写一些get()来返回类B的对象但是要调用该函数我应该拥有该对象。但我不知道该怎么做。这可能很容易,但我是java的新手,我不知道该怎么做。请帮我解决这个问题。

**更新:我无法在C类中创建A类对象:( **

5 个答案:

答案 0 :(得分:0)

让A级公开

publi class A {

        private static B b = new B(); //Creates object of Class B and can access function.

        public static B getB() {
            return b;
          }
        }

          class C
          {
               //I want to get the reference of Class B object created in Class A....But How??? :(
          B b = A.getB(); //if it works ????
          }

答案 1 :(得分:0)

AB需要公开,类A需要提供必填字段的公共访问者。

public class B {
}

public class A {
    public B getB() {
        return this.b;
    }
}

答案 2 :(得分:0)

请注意,在当前的代码结构中,您将无法从方法之外的A对象中自动实例化B.

您可以在类描述中创建A对象,但要初始化B,您需要使用类构造函数。

public class A {
    private B b = new B();
    public B getB() {
        return b;
    }
}

public class C {
    private A a = new A();
    private B b;
    public C() {
        b = a.getB();
    }
}

或者,如果您不想创建A,则可以将其设为static

public static class A {
    private static B b = new B();
    public static B getB() {
        return b;
    }
}

public class C {
    private B b;
    public C() {
        b = A.getB();
    }
}

答案 3 :(得分:0)

您必须在C中访问A类,然后按字段共享B引用。

所以你可以这样做:

 class B { //your function... }
 class A { 
     B b = new B();

     public B getB() { return b }
 }
 class C {
     A a = new A();
     public B getB () { return a.getB() }
 }

}

答案 4 :(得分:0)

将构造函数添加到C类,对象b作为参数

public class C{
    private B bObj;
    public C(B b){
        bObj=b;
    }
}

从A类中调用此构造函数,该类将创建对创建的B对象的引用,并且您将在bObj中使用此引用。