Java → Kotlin的速查表
首先
这篇文章简单总结了在从Java迁移到Kotlin时可能会有所帮助的内容。由于我是第一次在Qiita上写文章,可能存在不足之处,希望大家能够温柔对待。如果有任何疑问或建议,请不吝告知,我将不胜感激。
环境
Java: 1.8.0_281
Java:1.8.0_281
Kotlin: 1.4.20
Kotlin:1.4.20
整数转换.parseInt、长整数转换.parseLong…
当您想要将从用户接收的参数转换为数字类型时,请使用此选项。
由于此选项未包含错误处理,因此建议检查参数是否为数字类型。
Java (只需要一种选择)
String str = "123";
Int i = Integer.parseInt(str);
Long l = Long.parseLong(str);
Kotlin:请只提供一个选项进行中文释义。
val str = "123" // String
val i = str.toInt() // Int
val l = str.toLong() // Long
验证是否为数值类型
在这个例子中,我们处理的是从String类型到Int类型的转换和错误处理,但是在其他数值类型中也可以以同样的方式进行。
Java (只需要一个选项)
String str = "123abc";
try {
// Int型へのキャストに成功
Int i = Integer.parseInt(str);
} catch (NumberFormatException e) {
// Int型へのキャストが失敗
System.out.println("Error!");
e.printStackTrace();
}
Kotlin (只需一个选项)
val str = "123abc" // String
val i = str.toIntOrNull() ?: kotlin.run {
// Int型へのキャストが失敗
println("Error!")
return
}
// ↓ Int型へのキャストが成功したときの処理
instanceof → 类型比较运算符
Java 是一种计算机编程语言。
String str = "hogefuga";
System.out.println(str instanceof String);
// → true
Kotlin – Kotlin
val str = "hogefuga" // String
println(str is String)
// → true
instanceof 和类型转换的组合技(智能转型)
关于SmartCast,看这里更容易理解。
Java 是一种广泛使用的编程语言。
String str = "hogefuga";
if (str instanceof String) {
String msg = (String) str;
// str がString型の時
} else {
// str がString型ではない時
}
// もしくは
if (!(str instanceof String)) {
// str がString型ではない時
}
// str がString型の時
String msg = (String) str;
Kotlin – Kotlin
val str = "hogefuga" // String
if (str is String) {
// str がString型の時
// Kotlinではisが通った場合、自分でキャストしなくてもその型に自動でキャストしてくれます。
} else {
// str がString型ではない時
}
// もしくは
if (str !is String) {
// str がString型ではない時
}
// str がString型の時
// この場合も自動でキャストしてくれます。
// こんなのも
// String
val msg = str as? String ?: kotlin.run {
// str がString型ではない時
return
}
// str がString型の時
参考资料
非常感谢!
类型检查和类型转换: ‘is’ 和 ‘as’: https://kotlinlang.org/docs/reference/typecasts.html