新的番石榴10 Optional陳述自然協變,因此可能被鑄造。如何使用番石榴任意作爲「天然協變物體」
如果我努力,所以它看起來有點難看:
Optional<Integer> opti = Optional.of(42);
Optional<Number> optn = (Optional) opti;
我喜歡看像一些實用功能:
static <T> Optional<T> transform(Optional<? extends T> opt, Class<T> clazz);
(?如何表達這種可選的成員函數)
甚至可以定義一個轉換函數對象:
static <T> Function<Optional<? extends T>, Optional<T>>
transformer(Class<T> class);
爲了將Collection<Optional<Double>>
轉換爲Collection<Optional<Number>>
而不爲每個創建新的對象?
我想即使是返回的函數對象可能是由一個內部單例實現。
無需醜陋類型參數:'Optional.of((數目)42);' –