gpt4 book ai didi

java - 一个对象能知道它的方法是从哪个对象调用的吗?

转载 作者:行者123 更新时间:2023-12-01 17:39:52 27 4
gpt4 key购买 nike

在 Moritz Haarmann 的博客中,我发现了一个 example of usage of Bonjour by Java 。这是从那里获取的代码:

public class ServiceAnnouncer implements IServiceAnnouncer, RegisterListener {
private DNSSDRegistration serviceRecord;
private boolean registered;

public boolean isRegistered(){
return registered;
}

public void registerService() {
try {
serviceRecord = DNSSD.register(0,0,null,"_killerapp._tcp", null,null,1234,null,this);
} catch (DNSSDException e) {
// error handling here
}
}

public void unregisterService(){
serviceRecord.stop();
registered = false;
}

public void serviceRegistered(DNSSDRegistration registration, int flags,String serviceName, String regType, String domain){
registered = true;
}

public void operationFailed(DNSSDService registration, int error){
// do error handling here if you want to.
}
}

我对“serviceRegistered”方法有疑问。据我了解,它是在服务注册期间(或之后)调用的(并将变量“registered”设置为等于“true”)。但我不清楚它到底是如何称呼的。因为服务是通过“registerService”方法注册的。该方法又调用“DNSSD.register”。而且,据我了解,“DNSSD.register”将调用“ServiceAnnouncer”类的“serviceRegister”方法。但是“DNSSD.register”如何知道它需要调用“ServiceAnnouncer”类的方法呢? “DNSSD.register”可以知道它是从特定类(在本例中为“ServiceAnnouncer”类)调用的吗?

最佳答案

ServiceAnnouncer 已将自身作为 DNSSD.register() 方法的最后一个参数传递,该方法显然需要 RegisterListener 的任何实例>。这样,DNSSD 就可以直接处理 ServiceAnnouncer 实例。

关于java - 一个对象能知道它的方法是从哪个对象调用的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com