自分自身を文字列に変換する方法を知っているnull可能なプロパティ(Javaオブジェクト)があります。この表現が空でない場合は、それで何かをしなさい。私はKotlinにこれを変換する最も慣用的な方法を見つけようとしている、と私は持っているnull以外のオブジェクトと空でない文字列表現を扱うためのKotlinイディオム
MyObject obj = ...
if (obj != null) {
String representation = obj.toString();
if (!StringUtils.isBlank(representation)) {
doSomethingWith(representation);
}
}
:
with(obj?.toString()) {
if (!isNullOrBlank()) {
doSomethingWith(representation)
}
}
しかし、それはまだ、そのようなのためにあまりにも多くの仕事のように感じているJavaではこれは次のようになります簡単な操作です。私はlet
とwhen
とwith
を組み合わせると、これを少し小さくすることができます。
手順は次のとおりです。
- 物(A)は
- nullでない場合は、オブジェクトの文字列表現(B)(A)は
- がで何かを行い空白でない場合は(B)
私が試した:
when(where?.toString()) {
isNullOrBlank() -> builder.append(this)
}
しかし、(1)それはで失敗します。
Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: @InlineOnly public inline fun
CharSequence?.isNullOrBlank(): Boolean defined in kotlin.text @InlineOnly public inline fun CharSequence?.isNullOrBlank(): Boolean defined in
kotlin.text
そして、それはそれを過ぎました場合でも、(2)それは私が実際に含めるように気にしない、徹底的else
をしたいと思います。
「コットンウェイ」とは何ですか?あなたはどちらか、(Kotlin 1.1以降)内蔵のSTDLIB takeIf()
またはtakeUnless
拡張機能を使用働くことができ
良い答えを、私はあなたがここにある場合、テストを中心に切り替えると思う:
このトピックの詳細については、を参照してください。文字列表現が_not_ nullであれば、彼は 'doSomethingWith'を呼び出すことを望みます。 – marstran
ああ、私の答えをフリップされます:-)ありがとう –
@marstran正しい - 私は良い_文字列表現を持っている場合_ thing_をしたいです。 –