第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

當存在不同的泛型類型時使用接口是否有意義

當存在不同的泛型類型時使用接口是否有意義

喵喵時光機 2023-10-12 20:32:39
使用接口是提供抽象的好方法,如果可能的話我通常會嘗試使用它。但這次我的情況有點不同,我不確定在這里使用是否是一個好的做法。我有兩個不同的類,需要一些具有相同簽名的查詢方法。比如說 MyString 和 MyInteger。我正在考慮用一種方法定義一個接口:public interface MyInterface{   // no type is specified for the list, because each implementation will have different type of object   List query();  }所以基本上我需要實現(xiàn)兩個不同的類來實現(xiàn)上面的接口。第一個將獲得List<String>,第二個將獲得List<Integer>查詢方法的結(jié)果。問題是我不喜歡在接口中不指定泛型類型,因為稍后我需要進行強制轉(zhuǎn)換。那么在這里使用接口是否有意義,或者更好地實現(xiàn)兩個具有相同方法簽名而沒有公共接口的單獨類?
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經(jīng)驗 獲得超9個贊

問題是我不喜歡在界面中不指定通用類型......

這正是你解決這個問題的方式。

當我需要從列表中獲取對象時,可以說 Integer x = (Integer)list.get(index); 這只是一個例子,實際上我使用用戶定義的對象。

泛型的全部意義在于您不需要這樣做。反而:

public interface MyInterface<T> {

    List<T> query();  

}


public class MyInteger implements MyInterface<Integer> {

    // ...

}


// ...

MyInteger foo = new MyInteger();


// ...

List<Integer> list = foo.query();


// ...

Integer i = list.get(index);

或者使用var,因為它已經(jīng)出現(xiàn)在該語言中一段時間了:


// ...

var foo = new MyInteger();


// ...

var list = foo.query();


// ...

var i = list.get(index);

那么在這里使用接口是否有意義,或者更好地實現(xiàn)兩個具有相同方法簽名而沒有公共接口的單獨類?


那要看。如果您將有多個要實現(xiàn)的類,并且您需要以通用方式處理這些類的實例(例如,因此您用而不是類來MyInterface<Integer>引用它們)和/或如果代表整體結(jié)構(gòu)的某些基本方面,那么使用接口可能是有意義的。如果不這樣做,如果只是要擁有兩個帶有方法的不同類,則可能不會。這取決于整體設(shè)計和(有點)風格。MyInterface<Integer>MyInterfaceList<something> query


查看完整回答
反對 回復 2023-10-12
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號