This is not a false positive. Your code is as follow:
if (obj.getOptional().isPresent()) {
obj.getOptional().get() // issue
}
There is no guarantee that the first getOptional() method execution returns the same object as the second getOptional() method execution. You have to store the value locally:
Optional<String> value = obj.getOptional()
if (value.isPresent()) {
value.get() // no issue
}