Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个对象能知道从哪个对象调用它的方法吗?_Java_Oop_Class_Methods - Fatal编程技术网

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

Java 一个对象能知道从哪个对象调用它的方法吗?,java,oop,class,methods,Java,Oop,Class,Methods,在Moritz Haarmann的博客中,我发现了一个。下面是代码: public class ServiceAnnouncer implements IServiceAnnouncer, RegisterListener { private DNSSDRegistration serviceRecord; private boolean registered; public boolean isRegistered(){ return register

在Moritz Haarmann的博客中,我发现了一个。下面是代码:

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”方法的问题。据我所知,它是在服务注册期间(或之后)调用的(它将变量“registed”设置为等于“true”)。但我不清楚的是它的确切名称。因为服务是通过方法“registerService”注册的。此方法依次调用“DNSSD.register”。而且,据我所知,“DNSSD.register”将调用“ServiceAnnouncer”类的“serviceRegister”方法。但“DNSSD.register”如何知道它需要调用“ServiceAnnouncer”类的方法呢?“DNSSD.register”是否可以知道它是从特定类调用的(在本例中为“ServiceAnnouncer”类)

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

这个类似乎是一个侦听器,即
RegisterListener
。通过将自身传递到
寄存器(..)
方法,它已在
DNSSD
中注册为侦听器


有关的详细信息,请阅读。

这个类似乎是一个侦听器,即
RegisterListener
。通过将自身传递到
寄存器(..)
方法,它已在
DNSSD
中注册为侦听器


欲了解更多信息,请阅读。

无关,但您希望删除接口前面的“I”,以遵循Java编码标准(以及您的Java程序员同事的可读性)。是的,但我在编写代码时并不完全了解Java编码标准。:-)与此无关,但是为了遵循Java编码标准(以及您的Java程序员同事的可读性),您确实希望删除接口前面的“I”。是的,但在编写代码时,我并不完全了解Java编码标准。:-)谢谢你的回答。这很有道理。但我不明白,为什么说“DNSSD.register()”需要一个RegisterListener实例?它需要一个使用RegisterListener作为接口的类的实例。您也可以将其理解为:一个实现
RegisterListener
的实例。谢谢您的回答。这很有道理。但我不明白,为什么说“DNSSD.register()”需要一个RegisterListener实例?它需要一个使用RegisterListener作为接口的类的实例。您也可以将其理解为:一个实现
RegisterListener
的实例。