2016-01-20 57 views
1

我正在使用javas泛型,我想使用Java 8可選。泛型與選項

所有我需要的是,我可以使用這個可選的,什麼包含一個K類擴展/實現XYInterface。

這裏是我的示例代碼:

import java.util.Optional; 
public class OptionalGeneric<Optional<K extends InterfaceXY>> { 
     ... 
public Optional<K> getOptionalItem(){...} 
} 

Eclipse中始終顯示一個警告:

類型可選不是通用的;它不能參數化 論據

我應該如何編寫這個類來獲取項目?

回答

1

您需要:

import java.util.Optional; 
public class OptionalGeneric<K extends InterfaceXY> { 
     ... 
public Optional<K> getOptionalItem(){...} 
} 

該類paramaterised在K,不Optional<K>.

7

在具有類型參數的類中,只能直接指定類型參數(如在MyCls<X extends A, Y extends B, Z>中)。然後,使用泛型類型的任何地方類,包括作爲參數傳遞給其他類型:

public class OptionalGeneric<K extends InterfaceXY> { 
    public Optional<K> getOptionalItem(){...} 
} 

正如你已經聲明它上面,編譯器認爲你的類型參數被稱爲Optional,並且越來越迷茫的時候類型參數本身是參數化的。

+1

也許提的是,他得到了錯誤的原因是,他的方式宣佈它「可選」被作爲通用類型變量/參數而不是java.util.Optional類。 – user268396