Optional and Lambda
June 28, 2014 Leave a comment
This is a piece of code that I converted using Lambdas. It is using JMX but that is irrevelant.
I wanted to use this method initially. This is the JDK source.
/**
* Returns an {@code Optional} describing the specified value, if non-null,
* otherwise returns an empty {@code Optional}.
*
* @param <T> the class of the value
* @param value the possibly-null value to describe
* @return an {@code Optional} with a present value if the specified value
* is non-null, otherwise an empty {@code Optional}
*/
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
But once I used Lambda code I realized the API returns Optional<MemoryPoolMXBean>
Optional<MemoryPoolMXBean> mpx = Optional.empty();
// for (MemoryPoolMXBean pool : memoryBeans) {
// l.debug(pool.getName());
// if (pool.getName().equals(METASPACE)) {
// mpx = Optional.ofNullable(pool);
// }
// }
mpx =
memoryBeans
.stream()
.filter(p ->
{
l.debug(p.getName());
return p.getName().equals(METASPACE);
})
.findFirst();
I don’t want to delve too deep into this as it doesn’t break the code that calls this.