Как передать объект из класса Java в другой класс Java

Я создал экземпляр класса в Java следующим образом:

ABC ab = new ABC();

Я хочу получить доступ к этому мгновению ab в другом классе XYZ, Как сделать этот объект доступным в классе XYZ?

6 ответов

Трудно ответить на ваш вопрос без более конкретной информации о вашей проблеме, но это, безусловно, сработает:

Вы можете использовать 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
   } 
}

Есть несколько способов сделать то, что вы хотите достичь. Некоторые из них могут быть следующими:

Передача ссылки на объект черезconstructor
Здесь вы явно передадите ссылку на ваш ссылочный класс при создании объекта фактического класса.

public class ActualClass{
    private ReferenceClass refClassObject;

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

class ReferenceClass{
    /**
    * Your implementation of the class
    */
}

Использование методов получения / установки
При таком подходе вы передадите ссылку на ваш объект через explict 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
    */
}

Использование комбинации конструкторов и геттеров / сеттеров
Для большей гибкости вы можете инициализировать объект класса 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
    */
}

Какой из них выбрать? Ну, это будет зависеть от вашей реализации и требований.

Этот ответ точно такой же, как и Даг Рамси, эту ссылку я пытался объяснить с той же логикой.

  public class A {
        public void m1() {
            System.out.println("inside m1 method");
            ABC ab = new ABC(); // 2 object is made and reference is given to ab 
            XYZ xyz = new XYZ();  3 object is made and reference is given to xyz 
            xyz.send(ab); // 4 THIS IS WHAT YOUR QUESTION MEANS
        }
    }


    class XYZ {
       ABC ab;
       //...
       void send(ABC ab) { // 5
         this.ab = ab;
         System.out.println("inside send");
         callme(); 
       }
       //...
       void callme() { // 6
           System.out.println("A is : "+ab.a);
           System.out.println("b is : "+ab.b);
          // do something with instance variable ab
       } 
    }

public class ABC {
    int a = 10;
    static int b= 20;
    public static void main(String[] args) // called first
    {
        A a = new A();
        a.m1();
    }
}

Я знаю, что этот вопрос старый, но если я прав, вы хотите перенести объект в другой класс для использования.

Для этого нужно несколько вещей

Класс XYZ должен иметь конструктор для принятия в параметре "Объект", что-то вроде

class XYZ{
    private Object ab
    public XYZ(Object ab){
        this.ab = ab;//This is the constructor called when you create an XYZ object, and want to use the Object ab in XYZ
    }

У вас есть два способа передать параметр объекта одному классу другому.

  • Передача параметра в метод

    public void passMethod(ABC ab) {
    }
    
  • Передача параметра в конструктор

    public class XYZ {
    
        public XYZ(ABC ab) {               
        }
    }
    
package demo;

class ABC{
     void disp(xyz arg1){
        System.out.println("runing disp method in pratics");
        System.out.println("x value:"+arg1.x);
        arg1.test();
     }

}

class xyz{
     int x = 67;
     void test(){
        System.out.println("runing test method in pratics");
     }
}

class pratics {

    public static void main(String[] args) {
        ABC ab=new ABC();
        ab.disp(new xyz());
    }

}
Другие вопросы по тегам