鉴于下面的类定义,有没有办法判断我是否被称为发件人或接收者?
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?
}
}
}
答案 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)。