如何将Object从java类传递给另一个java类

use*_*657 3 java

我在java中创建了一个类的实例,如下所示:

ABC ab = new ABC();

我想ab在另一堂课中访问这个瞬间XYZ.如何在XYZ类中使用此对象?

Chr*_*gis 8

如果没有关于您的问题的更具体信息,很难回答您的问题,但这肯定会奏效:

如果要在该类中的任何位置使用它,可以使用setter在其他类中初始化实例变量:

class someClass {
   void someMethod() {
      ABC ab = new ABC();
      XYZ xyz = new XYZ();
      xyz.setABC(ab);
   }
}

class XYZ {
   ABC ab;
   //...
   void setABC(ABC ab) {
     this.ab = ab;
   }
   //...
   void doSomething() {
      // do something with instance variable ab
   } 
}
Run Code Online (Sandbox Code Playgroud)


Suj*_*jay 5

有几种方法可以完成您想要实现的目标。其中一些可能如下:

通过 constructor
Here传递对象引用,当您创建实际类的对象时,您将显式传递引用类的引用。

public class ActualClass{
    private ReferenceClass refClassObject;

    /**
    * Passing through a constructor
    */
    public ReferenceClass(ReferenceClass refClassObject){
        this.refClassObject = refClassObject;
    }
}

class ReferenceClass{
    /**
    * Your implementation of the class
    */
}
Run Code Online (Sandbox Code Playgroud)

使用 getter/setter 方法
在这种方法中,您将通过显式public setXX()方法传递对象的引用。这种方法更灵活,因为您可以在需要时更新参考对象(认为polymorphism)。举个例子:

public class ActualClass{
    private ReferenceClass refClassObject;

    public ActualClass(){
    }

    public void setReferenceClass(ReferenceClass refClassObject){
        this.refClassObject = refClassObject;
    }

    public ReferenceClass getReferenceClass(){
        return refClassObject;
    }
}

class ReferenceClass{
    /**
    * Your implementation of the class
    */
}
Run Code Online (Sandbox Code Playgroud)

使用构造函数和 getter/setter 的组合
为了增加灵活性,您可能希望使用引用初始化 Actual 类对象。但是,如果您还想保留在稍后阶段更改对象引用的选项,请选择我上面指定的 #1 和 #2 的组合。

public class ActualClass{
    private ReferenceClass refClassObject;

    public ActualClass(){
    }

    public ActualClass(ReferenceClass refClassObject){
        this.refClassObject = refClassObject;
    }

    public void setReferenceClass(ReferenceClass refClassObject){
        this.refClassObject = refClassObject;
    }

    public ReferenceClass getReferenceClass(){
        return refClassObject;
    }
}

class ReferenceClass{
    /**
    * Your implementation of the class
    */
}
Run Code Online (Sandbox Code Playgroud)

你应该选择哪一个?那么这将取决于您的实施和要求。