如何从java中获取“主机”对象

如何从java中获取“主机”对象,java,Java,我需要获取另一个对象的宿主对象。这里有一个例子 假设我有 class Peer { final Service service; public Peer(Service service) { this.service = service; } public void ping() { service.ping(); } } 及 然后在服务类中,我需要获取对等对象。这可能吗?在创建服务实例时,您需要将对等对象存储在服务对象中

我需要获取另一个对象的宿主对象。这里有一个例子

假设我有

class Peer {
    final Service service;
    public Peer(Service service) {
        this.service = service;
    }
    public void ping() {
        service.ping();
    }
}

然后在服务类中,我需要获取对等对象。这可能吗?

在创建服务实例时,您需要将对等对象存储在服务对象中,这是检索它的唯一方法。 在服务内部创建一个接受对等的构造函数

问题是:

this.getPeer()? //HERE I NEED SOME COMMAND TO GET the Peer object, is this possible?
没有这样的命令。简单地说:java对象不知道它们是在什么上下文中创建的。服务实例了解创建它的对等方的唯一方法:例如,通过传递对该服务对象的引用,例如在其构造函数中传递引用。或者在服务类上有一个setter方法,允许您这样做

当然,这听起来是错误的。服务实例应该真正独立于使用它的对等方!换句话说:如果一个服务知道一个或多个真的有意义吗?!然后服务类需要一个字段来记住这种关系。但至少这里给出的示例表明,您的服务根本不应该知道或关心使用它的同行

class Service {
    Peer peer;
    public Service(Peer peer){
        this.peer = peer;
    }

    public Peer getPeer() {
        return peer;
    }

    public String hola() {
        Peer peer = getPeer();
    }
}
this.getPeer()? //HERE I NEED SOME COMMAND TO GET the Peer object, is this possible?