在使用在func1中创建的对象调用的B类的func2时,如何引用使用A类的func1调用的对象?

时间:2019-09-03 16:24:21

标签: java class object

我有一个类A,并且在类A中,我具有函数func1func2。 在同一文件中,我具有类B,在该类B中,我具有函数func3。 在主类中,声明了obj1中的对象class A。 使用此对象,调用func1中的class A。 在func1的{​​{1}}中,创建了class A的对象obj2。 使用此对象,调用class B中的func3。 现在,在class B的{​​{1}}中,我想用对象func3调用class B的{​​{1}}。为此,我想从func2的{​​{1}}中引用该对象。可能吗?如果是,怎么办?

我尝试使用class A无效。 现在,我将对象obj1作为参数传递,并且可以正常工作。但是我想不传递它就做同样的事情,因为我想使用对象数组并且每次对象都应该不同时

func3

1 个答案:

答案 0 :(得分:0)

  

有可能吗?

是的

  

如果是,怎么办?

选项1:作为参数传递

obj1作为参数传递给func3

或更准确地说,由于从func3的方法调用obj1,因此将this作为参数值传递:

class A {
    public void func1()
    {
        B obj2 = new B();
        obj2.func3(this);
    }
}
class B {
    public void func3(A a)
    {
        a.func2();
    }
}

选项2:传递给构造函数

A引用传递给B构造函数,并使B在字段中记住它。

class A {
    public void func1()
    {
        B obj2 = new B(this);
        obj2.func3();
    }
}
class B {
    A a;
    public B(A a) {
        this.a = a;
    }
    public void func3()
    {
        this.a.func2();
    }
}

选项3:内部类

使类B成为A的内部类。与选项2基本相同,但是编译器会为您处理对A的引用。

class A {
    public void func1()
    {
        B obj2 = new B();
        obj2.func3();
    }

    class B {
        public void func3()
        {
            A.this.func2();
        }
    }
}