loganj
05/27/2016, 1:04 PMdmitry.petrov
05/27/2016, 1:07 PMkittinunf
05/27/2016, 1:08 PMdmitry.petrov
05/27/2016, 1:08 PMsetText
can't "refine" its arguments (otherwise it will not override the original method).
Covariant return types (that is, "refined" return type of the getter in your example) are ok, and are used rather frequently.jkbbwr
05/27/2016, 1:20 PMjkbbwr
05/27/2016, 1:20 PMloganj
05/27/2016, 1:23 PMevanchooly
05/27/2016, 1:23 PMevanchooly
05/27/2016, 1:24 PMdmitry.petrov
05/27/2016, 1:26 PMoptional.orElse(null)
evanchooly
05/27/2016, 1:27 PMdmitry.petrov
05/27/2016, 1:27 PMfoo(Optional<T> x)
.dmitry.petrov
05/27/2016, 1:28 PMdmitry.petrov
05/27/2016, 1:29 PMOptional<Optional< ... T>..>
somehowevanchooly
05/27/2016, 1:30 PMkirillrakhman
05/27/2016, 1:45 PMoptional.get()
will throwkevinmost
05/27/2016, 1:45 PM.orElse(null)
though, right?kirillrakhman
05/27/2016, 1:46 PMkirillrakhman
05/27/2016, 1:46 PMkirillrakhman
05/27/2016, 1:46 PMkirillrakhman
05/27/2016, 1:46 PMOptional<Optional<T>>
with Kotlin?kirillrakhman
05/27/2016, 1:47 PMOptional<T?>
right?kirillrakhman
05/27/2016, 1:47 PMkirillrakhman
05/27/2016, 1:47 PMOptional<T>?
kevinmost
05/27/2016, 1:47 PMinline fun <T> Optional<T>.unwrap() = orElse(null)
And then the nested Optionals could be used like optional.unwrap()?.unwrap()
. Kind of gross, but I think any way of working with a nested Optional would be grosskirillrakhman
05/27/2016, 1:47 PMkirillrakhman
05/27/2016, 1:48 PMkevinmost
05/27/2016, 1:48 PMinline fun <T> Optional<T>?.unwrap() = this?.orElse(null)
if you wanted to be able to call it on potentially-null `Optional`s tookirillrakhman
05/27/2016, 1:48 PMkirillrakhman
05/27/2016, 1:49 PMOptional<T>?
anywhere, ever