我试着运行下面的代码,但是代码不能通过编译,我得到了错误:
class MyClass1(var i: Long?) {
fun change(): Long? {
if (i != null) {
return i + 10L
} else {
return 5L
}
}
}
我用Java写的代码MyClass2,它能很好地工作,为什么?
class MyClass2{
private Long i;
public MyClass2(Long k){
i=k;
}
public Long change(){
if (i!=null){
return i+10L;
}else {
return 5L;
}
}
}
因为i
是一个var
,所以理论上可以通过另一个线程在null检查和加号操作之间更改它。
您可以使用let
函数来解决它。它将通过将i
作为参数提供给let
来“捕获”i
的值。
fun change(): Long? {
return i?.let { it + 10L } ?: 5L
}
我尝试运行以下代码,但代码无法通过编译,我得到错误: 智能强制转换为“Long”是不可能的,因为“I”是一个可变属性,可能已经被更改了 为什么? 我用Java写的代码MyClass2,它能很好的工作,为什么?
为什么当我使用No.2脚本时Android Studio显示错误。我发现1和2之间没有区别。 请解释这个案例
我已经使用android studio内置的文件转换器将java文件转换为kotlin。它显示以下错误。 [SMARTCAST_IMPOSSIBLE]智能强制转换为“ReminderRequester”是不可能的,因为“ReminderRequester”是一个可变属性,此时可能已被更改 我查过类似的问题,但我不能正确地理解它。 上述错误的含义是什么?如何修复?
我正在尝试在 Kotlin 中生成一个单例,并且遇到了问题,因为我无法。 这似乎是制作单例的一种非常标准的方法。为什么它不让我,我该如何解决它?
我如何解决这个问题?我正在从Excel文件中读取数据,输出为字符串。 DataProvider的方法“getData”需要Object[][]返回类型。 错误:(17,16)Java:不兼容类型:java.lang.String无法转换为java.lang.Object[]
问题内容: 所以这工作: 但这不是: 总而言之,我得到了第一部分(拳击),但是我发现第二部分不起作用是非常不直观的。是否有特定的原因(除了String从Object继承而int不从Object继承)? 编辑: 为了完善我的问题,这也可以: 但是,以下内容却没有: 令人惊讶的是,您遇到了与String相同的问题: 在最后一行产生类强制转换异常。仍然有效: 问题答案: 我刚刚找到了我正在寻找自己的答案