亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在自己的接口中初始化類

在自己的接口中初始化類

互換的青春 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毫無意義:它們不補充/實現它們擴展的接口?;旧希鼈兪强梢栽谄渌胤蕉x的常量的持有者。請注意,常量綁定到特定的類,而接口具有更廣泛的含義,提供通用接口。

  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 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號