簡體   English   中英

用Java定義具有相同名稱但類型參數數量不同的通用接口

[英]Define generic interfaces with same name but a different number of type parameters in Java

在Java(1.7)中,是否可以用相同的名稱定義不同類型的參數的多個接口? 我本質上在尋找的是本質上類似於.NET的Func<TResult>Func<T1, TResult>Func<T1, T2, TResult>Func<T..., TResult>委托類型的精神。 非常像可選的類型參數

Java語言中是否存在這樣的功能,還是僅限於創建名稱不同的接口,例如Func0<TResult>Func1<T1, TResult>Func2<T1, T2, TResult>

泛型類型是編譯時的功能,這意味着在運行時,您的Func類將都是同一類。 即使您單獨編譯它們並將它們添加到類路徑中,也只會加載它們。 這意味着它們必須具有不同的完整類名才能在運行時使用。

您不能有可變數量的泛型類型參數,但是可以通過使用Void類型來“強制”忽略該參數:

interface Func<T1, T2, IReault> {...}
interface Func1<T1, IResult> extends Func<T1, Void, IResult> {...}
interface Func0<IResult> extends Func<Void, Void, IResult> {...}

Void無法實例化,因此您可以傳遞/返回/使用的唯一有效Void引用為null ,從而強制在實現和調用Void有效地忽略Void參數。

Func1Func0的實例仍然是Func實例。

暫無
暫無

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

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