覆盖多个接口时,是否可以确定调用者的上下文?

时间:2014-10-02 10:54:31

标签: java

鉴于下面的类定义,有没有办法判断我是否被称为发件人或接收者?

public class Outer {
  interface Master {
    public void connect();
  }
  interface Receiver extends Master {} 
  interface Sender extends Master {}

  private class Example implements Sender, Receiver {
    @Override
    public void connect() {
        // Sender or Receiver?
    }
  }
}

2 个答案:

答案 0 :(得分:0)

没有。你无法确定。重写的方法属于两个接口。

I wrote the same here。希望它有所帮助。

答案 1 :(得分:-1)

对于任何界面,实施都很重要,可能会有所不同。

对于您的示例,我无法看到,在哪种情况下,您可能需要知道public void connect()是发送方还是接收方的实现?

由于方法的签名完全相同,因此根本没有创建两个接口的意义(假设您在接口中没有更多方法)。

在Java中使用接口是关于良好的设计实践并在运行时利用多态行为。但是在设计接口时需要小心,它们不应该让人困惑。在您的情况下,接口的含义如下:

  

Master - 代表connect()方法的界面。

     

Sender - 需要master {的connect()方法的接口   可能有自己的方法。

     

Receiver - 需要master {的connect()方法的接口   可能有自己的方法。

现在当你说Example正在实现Sender和Receiver时,那么connect()方法实现是Master接口的实现(因为它根本不属于Sender和Receiver)。