Tag: 可空

Android parcelable – 写入可以为空

我有我的parcelable课文章: class Article : Parcelable { var image: Long? = null var category: String? = null var videos: String? = null constructor(data: JSONObject) { if (condition) image = 50000L category = data.getString(“category”) videos = data.getString(“videos”) } private constructor(parcel: Parcel) { image = parcel.readLong() category = parcel.readString() videos = parcel.readString() } override fun writeToParcel(dest: Parcel, flags: […]

科特林。 如何检查是否可以通过reflection字段?

我正在开发一个代码生成器,在运行时从类中获取数据。 该发生器只能与Kotlin一起使用。 目前,我正面临着这个问题,因为我不知道如何检查该字段是否可以空。 所以主要问题是如何通过reflection来实现这个检查?

将kotlin转换为java后,Notnullvariables可以为空

当我有一个这样的kotlin类时,假设uniqueName是NotNull。 data class Payload( @SerializedName(“unique_name”) val uniqueName: String, @SerializedName(“nbf”) val nbf: Int, @SerializedName(“exp”) val exp: Int, @SerializedName(“iat”) val iat: Int ) 但是当我测试这个代码 @Test fun fromStringJsonToObject4() { val gsonHelper = GsonHelper() val payloadJsonString = “{}” val payload = Payload(“”, 0, 0, 0) assertEquals(gsonHelper.fromStringJsonToObject(payloadJsonString, Payload::class.java), payload) } 它返回 Expected :Payload(uniqueName=null, nbf=0, exp=0, iat=0) Actual :Payload(uniqueName=, nbf=0, exp=0, […]

各种问题@NonNull,@NotNull和@ParametersAreNonnullByDefault

我是使用AndroidStudio或IntelliJ IDEA的Android开发者。 我倾向于相信我的IDE,并且对下一个事实感到恼火: 在IDE项目中,当IDE自动生成扩展Kotlin类的java中的一个方法时,两个IDE都使用@NotNull而不是@NonNull ,是否有这样的设置? 这个 我们有@ParametersAreNonnullByDefault但是当我从第1点重写方法,并且我没有把任何注释IDE警告我,但为什么? 我的假设是错的吗? 有解决方案吗?

如何在kotlin的JavaFX图表中添加一个系列

说我有一个系列: val series: XYChart.Series = XYChart.Series() series.data.addAll(myData.map { pair -> XYChart.Data(pair.key, pair.value) }) 现在我想创建一个折线图如下: val xAxis = NumberAxis() val yAxis = NumberAxis() val lineChart = LineChart(xAxis, yAxis) lineChart.data.add(series) 但是,当我这样做,我得到以下错误: Error:(xx, xx) Kotlin: Type mismatch: inferred type is XYChart.Series but XYChart.Series! was expected 有没有办法解决这个问题,而不改变myMap的键和值types为Number (哪些工作)? 对于我来说, Int和Long都是从Numberinheritance的,所以在这里应该没有任何问题。 理想情况下,我希望能够映射一个数据集(在本例中为myData ),而不必实际修改数据集本身或者使用正确的types(看起来很昂贵)制作数据集的副本。 有人可能也可以解释为什么linChart.data.add(series)期望XYChart.Series! ,或者更具体地说,为什么我会得到一个错误,如果它期望这个? 因为我感到我传递的是无关紧要的印象! 意味着你可以通过任何事情; 要么是一个可能为null的序列,要么是一个显式不为null的序列。

Kotlin等同于Java8中的Optional :: map

你知道是否有捷径: if (x == null) null else f(x) 对于Java Optional你可以这样做: x.map(SomeClass::f)

对空数组kotlin进行types推断

假设我有一段代码: fun temp2 (li : MutableList):Int { if (li.isEmpty()) return 0 val pos=li.filter { it>0 } val neg=li.filter { it<0 } if (pos.isEmpty() && neg.isNotEmpty()){ // this gives compiling error because Required: Int, Found: Int? // But I just checked one line higher that neg is Not Empty, so there (at least I guess) // […]

为什么在Kotlin中隐式地使用了null + nulltypes的字符串?

以下Kotlin代码: val x = null + null 结果x是Stringtypes的,根据String.plus的文档是正确的: 将此字符串与给定[other]对象的字符串表示forms连接起来。 如果接收者或[other]对象为空,则表示为字符串“null”。 但是,我不明白为什么会发生这种情况 – 是由于语言的某些特殊function?

我正在获取Kotlin安全调用的重载解析模糊错误

我有一个可以为空的字符串variablesab 。 如果我在给它赋值为null之后通过安全调用操作符来调用UpperCase,kotlin会给出错误。 fun main(args: Array){ var ab:String? = “hello” ab = null println(ab?.toUpperCase()) } 错误:(6,16) 重载分辨率模糊性: @InlineOnly public inline fun Char.toUpperCase():在kotlin.text中定义的字符 @InlineOnly public inline fun String.toUpperCase():在kotlin.text中定义的字符串 这里有什么问题?

Kotlin盒装诠释是不一样的

请帮我理解kotlin文档中的这段代码: val a: Int = 10000 print(a === a) // Prints ‘true’ val boxedA: Int? = a val anotherBoxedA: Int? = a print(boxedA === anotherBoxedA) // !!!Prints ‘false’!!! 现在,我明白了,首先int a = 10000然后在下一行中使用===进行比较。 现在的问题是,为什么当它分配boxedA=a ,它检查是否为空使用int? 。 它可以写成这样: – val boxedA: Int=a 如果我的理解错误,请有人指导检查一下正确的地方,或者给我解释一下。