我是Kotlin的初学者,我实际上正在Kotlin中做一个Androïd应用程序。我必须初始化一些值未知的属性(它不是,但从现在开始很难定义),所以我想像在TypeScript中一样,例如:公共startDate:any;
这意味着startDate的类型可以是任何东西(它不受保护,但它有助于获得值,而不是关于发生了什么)。
有没有办法在科特林做到这一点?我试过了或者如列表中的*
感谢您的阅读!
如前所述,您应该使用任意类型。根据需要,使用val或var(val vs var)
var myVal : Any
如果您的变量也可以是null us ?
var myVar: Any?
val myVal : Any?
您还需要将变量抽象或声明稍后将对其进行初始化lateinit
仅对var有效,而abstract适用于val和var
lateinit var myVar: Any
abstract val myVal : Any
别忘了检查<code>lateinit var
if (::myVar.isInitialized) {
//use myVar
}
更多关于任何类型的
空安全
就像java中的基类一样,你可以在kotlin中使用任何。
如果属性可以包含任何对象(但不能包含< code>null,这意味着它必须立即初始化),请使用类型< code>Any。
使用类型<代码>任意如果属性可以包含任何对象或<code>null。这相当于Java的对象
类型。
从设计的角度来看,如果你知道实际的类型,并能利用Kotlin的强类型系统,那当然更好。如果您或您的团队正在定义类型,您可能会约束它们实现某个特定的接口,这样您就不会给它分配任意的值。稍后,当重构应用程序时,您可以移除该接口,并且将收到所有出现的编译错误,迫使您正确地修复它。
我刚刚开始用Kotlin来试验Android应用程序。我只想像这样继承应用程序类: 但编译器提出了警告: 建议将其改为: 我在文档中读到了主构造函数和辅助构造函数。所以如果超级类有一个主构造函数,那么有必要在这里写吗?就像应用程序类有自己的构造函数一样 那么就有必要为派生的?或者我不能像Java那样做: 或者这个错误暗示了别的什么?有人能详细解释一下吗?我对这门语言非常陌生,这对我来说看起来很奇怪
是否有可能在Kotlin 属性初始化之前从其获取< code>::class.java? 从逻辑上讲,它应该可以工作——我试图获取一个类而不是一个值,但实际上它在未初始化的属性访问异常时失败。 请注意,我试图获取类的属性位于泛型类中,其类型是泛型参数之一: 我需要这个类来创建的实例 当然,我不能做到: 对此有什么解决办法吗?
我正在使用KotlinPoet和Auto Service自动生成代码。我没有找到任何方法来知道带注释的类是否具有“内部”修饰符,因此我可以使用相同的修饰符创建另一个类。例如: 所以我想使用静态编程语言反射我将能够得到这些信息,但没有运气。 关于如何做到这一点的任何线索?
在使用Kotlin的微文件/Quarkus项目中,有一个带有Instant类型变量的数据类。 问题是,生成的openapi模式并不表示Instant的值实际上是如何传输的。 模式如下所示,而它仅表示为这样的字符串:
我正在尝试使用MapBox获取android中的用户位置。我的地图是碎片。这就是我初始化它的方式。 当我尝试调用enableLocationComponent(it)时,应用程序正在崩溃。通常,当我从onMapReady()调用它时,它工作正常。但这是另一种情况。我真的不知道把enableLocationComponent(it)放在哪里
这不是重复。“object”表达式是关键字。 我正在尝试将Timber Android库与 https://github.com/orhanobut/logger 集成,我需要一个自定义的LogStrategyTimber来满足我的需求。 我想出了这个逻辑。但是我在初始化遇到了困难 customLogStrategyForTimber从未初始化。有更好的方法来实现这个逻辑吗?尝试在第一个overr