问题描述
新的番石榴10 表示自然协变,因此可能被铸造。
如果我尝试这样看起来有点难看:
可选<整数> opti = Optional.of(42);
可选<数字> optn =(可选)opti;
我喜欢看到一些实用功能:
static< T>可选< T> transform(可选的<?extends T> opt,Class< T> clazz);
(如何将此表示为可选的成员函数?)
甚至有可能定义一个转换函数对象,例如:
static< T>功能<可选< ;?延伸T>,可选< T>>
变压器(Class< T> class);
为了变换集合<可选< Double>>
转换为集合<可选<数字>>
,而无需为每个对象创建新对象 $ b
我认为即使是返回的Function对象也可以通过内部的单例实现。
通过指定<$ c $的类型c> 方法,您可以完全避免转换: 可选< Number> optx =可选。(42)的< Number>
The new Guava 10 Optional states to be naturally covariant and thus may be casted.
If I try so it looks a bit ugly:
Optional<Integer> opti = Optional.of(42);
Optional<Number> optn = (Optional) opti;
I like to see some utility function like:
static <T> Optional<T> transform(Optional<? extends T> opt, Class<T> clazz);
(how to express this as a member function of Optional ?)
Is it even possible to define a transformation function object like:
static <T> Function<Optional<? extends T>, Optional<T>>
transformer(Class<T> class);
in order to transform a Collection<Optional<Double>>
into a Collection<Optional<Number>>
without creating new objects for each?
I think even the returned Function object may be realized by an internal singleton.
By specifying the type of the of
method, you can avoid the cast entirely:
Optional<Number> optx = Optional.<Number>of(42);
这篇关于如何将“番石榴可选”用作“天然协变物体”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!