我在java中创建了一个类的实例,如下所示:
ABC ab = new ABC();
我想在另一个班级ab
中访问此即时XYZ
。如何在XYZ类中使用此对象?
答案 0 :(得分: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
}
}
答案 1 :(得分:3)
有几种方法可以实现您想要实现的目标。其中一些可能如下:
通过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
*/
}
使用getter / setter方法
在这种方法中,您将通过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
*/
}
使用构造函数和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
*/
}
你应该选择哪一个?那么这取决于你的实施和要求。
答案 2 :(得分:2)
这个答案与Doug Ramsey完全相同this link 我试着用同样的逻辑来解释。
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();
}
}
答案 3 :(得分:0)
您有两种方法可以将对象参数传递给另一个类。
将参数传递给方法
public void passMethod(ABC ab) {
}
将参数传递给构造函数
public class XYZ {
public XYZ(ABC ab) {
}
}
答案 4 :(得分:0)
我知道这个问题很旧,但是如果我是正确的,你想将一个Object转移到另一个要使用的类中。
为了做到这一点,你需要一些东西
类XYZ必须有一个构造函数来接受参数“Object”,它就像
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
}
答案 5 :(得分:0)
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());
}
}