为了账号安全,请及时绑定邮箱和手机立即绑定

在自己的接口中初始化类

在自己的接口中初始化类

互换的青春 2023-09-27 17:28:58
我查看了一些代码并注意到这样的结构: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();  }}它对我来说有潜力,但我以前从未见过这种结构。两个问题:这个模式的名称是什么(是那个模式(?))?在现实世界中使用它是一个很好的做法吗?
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

这是两个常量声明 interintr接口的示例。这不是一种模式,我不会说这是一个好的做法。

  1. Interface1并且Interface2毫无意义:它们不补充/实现它们扩展的接口。基本上,它们是可以在其他地方定义的常量的持有者。请注意,常量绑定到特定的类,而接口具有更广泛的含义,提供通用接口。

  2. 名称interintr很糟糕,它们没有告诉我们这些常量代表什么/做什么。

一个更合理的例子看起来像

interface TestInterface {

  void doFirst();

  void doSecond();


  TestInterface EMPTY = new TestInterface() {

    @Override

    public void doFirst() {}

    @Override

    public void doSecond() {}

  };


}

whereEMPTY表明它是接口的默认(且空)实现。请注意,我将其称为EMPTY(而不是empty),因为它始终是一个public static final字段。


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 44 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信