我查看了一些代码并注意到了这样的结构:
public interface TestIntrerface {
void doFirst();
void doSecond();
}
public interface Interface1 extends TestIntrerface {
Interface1 inter = new FirstClass();
}
public interface Interface2 extends TestIntrerface {
Interface2 intr = new SecondClass();
}
public class FirstClass implements Interface1 {
public void doFirst() {
//...
}
public void doSecond() {
//...
}
}
public class SecondClass implements Interface2 {
public void doFirst() {
//...
}
public void doSecond() {
//...
}
}
public class Test {
public static void main(String[] args) {
Interface1.inter.doFirst();
Interface2.intr.doSecond();
}
}
它对我来说有潜力,但我以前从未见过这种构造。
两个问题:
- 这个模式的名称是什么(是那个模式(?))吗?
- 在现实世界中使用它是一个很好的做法吗?
最佳答案
这是两个 constant declarations 的示例接口(interface)中的 inter
和 intr
。这不是一种模式,我不会说这是一个好的做法。
Interface1
和Interface2
没有意义:它们不补充/实现它们扩展的接口(interface)。基本上,它们是可以在其他地方定义的常量的持有者。请注意,常量绑定(bind)到特定的类,而接口(interface)则具有更广泛的含义,提供通用接口(interface)。名称
inter
和intr
很糟糕,它们无法说明这些常量代表什么/做什么。
一个更合理的例子看起来像
interface TestInterface {
void doFirst();
void doSecond();
TestInterface EMPTY = new TestInterface() {
@Override
public void doFirst() {}
@Override
public void doSecond() {}
};
}
其中 EMPTY
表明它是接口(interface)的默认(且空)实现。请注意,我将其称为 EMPTY
(而不是 empty
),因为它始终是 public static final
字段。
关于java - 在自己的接口(interface)中初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58258678/