在Java中,有没有办法从该类创建/使用的对象内部访问对象?

时间:2017-10-25 22:28:16

标签: java class object

让我们说我有一个实例化并使用另一个类的类。从第二节课开始,是否可以访问第一节课? 例如:

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { printOut } from './../actions/actions.js';
import InputComponent from './../components/inputComponent.js';
import PropTypes from 'prop-types';

const mapDispatchToProps = (dispatch) => {
  return {
    onClick: (input) => dispatch(printOut(input))
  }
}

export default connect(null, mapDispatchToProps)(InputComponent);

我知道如何使用以下内容获取该对象的类:

public class A {
    public B obj = new B();

    public void something() {
        b.somethingElse();
    }
}

public class B {
    public void somethingElse() {
        A owner = getCallingObject();
        //the object of class A that called b.somethingElse() is now stored in owner
    }

    public Object getCallingObject() {
        // ?????
        // returns the A that instantiated/owns this B
    }
}

我从另一个问题得到:How to get the caller class in Java。 有没有办法获得指向调用者对象的指针?

1 个答案:

答案 0 :(得分:1)

如果您控制源代码,并且B只能由A对象创建,则可以使B成为非静态内部类,然后您将自动通过A.this指针获取对该类创建者的引用。请注意,这不是B::somethingElse()的来电者,而是B的创建者,根据您的使用情况,它可能是也可能不是同一个。

public class A {
    public B obj = new B();

    public void something() {
        obj.somethingElse();
    }

    void thereAndBackAgain() {
    }

    public class B {

        public void somethingElse() {
            A owner = A.this; 
            owner.thereAndBackAgain(); 
        }
    }
}