Tag: 科特林

定义没有inheritance的公共属性

有没有在Kotlin中使用inheritance来定义公共属性的方法? 例如 如果我有两个类都需要一个“ID”属性。 class Dog() { var id: UUID? } class Cat() { var id: UUID? } 解决这个问题的一般JAVA方法是引入一个超级类 class Animal() { var id: UUID? } class Dog: Animal() class Cat: Animal() 但是现在“狗”和“猫”是“动物”的types。 如果我介绍一个“主席”类,也需要一个唯一的标识符呢? 本质上,我想创建一组属性的能力,我可以包含在许多不同的类中,以方便编程。 我不希望所有与inheritance有关的问题。

锁定Kotlin中的serialVersionUID

我一整个早上都在serialVersionUID地锁定一个Kotlin类的serialVersionUID 。 我有一个由Project扩展的BaseModel abstract class BaseModel( var id: Int? = null, private val fileName: String, private val data: MutableList, private val indices: MutableMap ) : Serializable { … protected fun writeToDisk() { val oos = ObjectOutputStream(BufferedOutputStream(FileOutputStream(fetchFileName())) ) oos.writeObject(fetchData()); oos.close(); } } 和项目类: class Project( var name: String = “”, var repo: String = “” ) […]

Kotlin – 具有私人构造函数的工厂函数

在Kotlin中,是否可以有一个工厂函数来创建一个具有私有构造函数的类的实例? 我的目标是强制使用工厂函数,并防止通过类的构造函数实例化。 例: // factory function, valid val myInstance = myClassOf() // class instantiation, invalid val myInstance = MyClass() 我试图模仿一些像intArrayOf()这样的内置工厂函数的行为,例如 // works val myIntArray = intArrayOf() // not possible as IntArray has a private constructor val myIntArray = IntArray()

Kotlin迭代器列表?

我有一个来自JsonNode fieldNames字符串的迭代器: val mm = … //JsonNode val xs = mm.fieldNames() 我想循环的领域,同时保持计数,如下所示: when mm.size() { 1 -> myFunction1(xs[0]) 2 -> myFunction2(xs[0], xs[1]) 3 -> myFunction3(xs[0], xs[1], xs[2]) else -> print(“invalid”) } 很明显,上面的代码不起作用,因为迭代器不能像这样索引。 我试图看看是否可以通过mm.toList()将迭代器转换为列表,但不存在。 我怎样才能做到这一点?

如何在kotlin中使用elvis运算符时否定布尔expression式?

我想否定下面的expression式: return SpUtils.loadEMail()?.isEmpty() ?: false 如果我添加一个! 之前的表情,像 return !SpUtils.loadEMail()?.isEmpty() ?: false IDE(Android Studio)告诉我 在kotlin.Booleantypes的可为null的接收方中只允许使用安全(?)或非null断言(!!)调用? 我如何否定这种表情?

在Kotlin中使用“大于”,“小于”比较可空整数的正确方法是什么?

var _age: Int? = 0 public var isAdult: Boolean? = false get() = _age?.compareTo(18) >= 0 这仍然给我一个空安全,编译错误,但我怎么能在这个问题上使用>, =或<=?

引用扩展function?

是否有可能得到一个扩展function的引用,就像你可能为通常的function所做的(见这里 )? 我期望下面的代码来编译,但现在::String.toSomething是未知的: fun String.toSomething() = length + 1 val some = listOf(“lala”, “bebebe”).map(::String.toSomething)

如何将2个数组转换为地图

我有2个数组,一个用字符串作为键,另一个用整数作为值。 我如何将它们转换为地图? val keys = arrayOf(“butter”, “milk”, “apples”) val values = arrayOf(5, 10, 42) val map: Map = ??? 编辑:我知道如何将列表转换为地图在Kotlin? ,但是并没有解决这个问题,因为我有2个列表。

在Kotlin中写入一个等于Int.MIN_VALUE的hex整数字面值

如何在Kotlin中写入一个等于Int.MIN_VALUE (十进制数为-2147483648 )的hex整数文字? AFAIK,一个Int是4个字节…有时好像2的补码用来表示整数…但我不确定。 我已经尝试了下面的hex文字来帮助我自己理解系统: 0xFFFFFFFF但这是一个Long ,而不是一个Int 0xFFFFFFFF.toInt()这是-1 -0xFFFFFFFF.toInt()这是1 0x7FFFFFFF这是2147483647这是Int.MAX_VALUE -0x7FFFFFFF这是-2147483647这是Int.MIN_VALUE+1 0xFFFFFFF ,十进制是268435455 0x0FFFFFFF也是十进制的268435455 但我不知道什么hex整数文字可以用来表示Int.MIN_VALUE 。 我希望答案不会让我感到愚蠢

Kotlin中的Room Persistence lib实现

我在kotlin中为我的数据库实现实现了Room persistence lib。 以下是我的Entity , Dao和Database类: Food.kt @Entity class Food(@ColumnInfo(name = “food_name”) var foodName: String, @ColumnInfo(name = “food_desc”) var foodDesc: String, @ColumnInfo(name = “protein”) var protein: Double, @ColumnInfo(name = “carbs”) var carbs: Double, @ColumnInfo(name = “fat”) var fat: Double) { @ColumnInfo(name = “id”) @PrimaryKey(autoGenerate = true) var id: Long = 0 @ColumnInfo(name = “calories”) var […]