我们说我有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类对象:( **
答案 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)
类A
和B
需要公开,类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
中使用此引用。