簡體   English   中英

在Java中,我可以有多個有界類型參數,但是是可選的

[英]In Java Can I have Multiple Bounded Type Parameters But Be Optional

我遇到的情況是,我正在創建一個數據模型類,其中包含特定類所需的所有數據點。 但是,根據類中所調用的內容,並不需要所有變量。 數據模型具有多個有界類型參數,但是,如果不是全部都在使用,那么其中一些參數是否可以選擇?

例如:

public class DataModel<OBJ extends Object, EXCEPT extends Exception, MODEL extends BaseModelClass> {
}

然后,當我實例化它時,我可能不需要模型並且想要做類似的事情:

DataModel<ClassA,RunTimeException,null> data = new DataModel<ClassA,RunTimeException,null>();

其中ClassA是在代碼的另一部分擴展對象的已定義類,而BaseModel是具有一些非常常見的部分的公司基礎模型。

因此,問題是這樣的事情是否可以解決,是否有一些適用於此類中未用於特定子方法的字段的有界類型參數是可選的?

在聲明泛型變量時,不能僅指定泛型類的某些參數化類型:這將是編譯錯誤。 泛型類的所有參數化類型均已指定,並且根據定義的范圍有效,或者應使用原始類型。

請注意,如果您不想為以下情況定義更具體的類型,則可以聲明與下限通配符相同的類型:

DataModel<ClassA,RunTimeException,BaseModelClass> data = new DataModel<>();

或通配符,例如(如Lexicore所述):

DataModel<ClassA,RunTimeException,?> data = new DataModel<>();

根據您的要求,我要補充一點,泛型不是為了向類添加/刪除新方法而設計的。 這些設計用來更精確地鍵入類的實例。 此外,您在客戶端類使用的類中定義泛型的次數越多,客戶端使用起來就越麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM