Как передать объект из класса 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());
}
}