Может быть, вы можете преобразовать String?
в Optional<T>
и применить конкатенацию префиксов с помощью метода Optional.map
и, наконец, извлечь полученное значение, используя orElse("")
...
Это функциональный подход кпроблема, но вы, очевидно, можете решить ее с помощью if
или троичного или оператора Элвиса , примененного к значению, возвращенному orEmpty
.
Если вам нравится функционалПодход, вы можете попробовать этот пример, который показывает как Optional и T?-> Дополнительные варианты использования:
fun <T> toOptional(value : T?) : Optional<T> {
if(value == null) {
return Optional.empty()
}
return Optional.of(value)
}
val opt:Optional<String> = Optional.empty()
println(opt.map { x -> "PREFIX/$x" }.orElse(""))
val opt2:Optional<String> = Optional.of("link")
println(opt2.map { x -> "PREFIX/$x" }.orElse(""))
var str : String? = null
println(toOptional(str).map { x -> "PREFIX/$x" }.orElse(""))
var str2 = "hrefValue"
println(toOptional(str2).map { x -> "PREFIX/$x" }.orElse(""))
Надеюсь, это поможет!