Tag: 科特林

我如何复制多个主构造函数?

我不确定Kotlin在这方面的最佳做法是什么。 说我有一个Java类, User有两个字段: username和password 。 它有一个这样的主要构造函数: public User(String username, String password) { this.username = username; this.password = hashPassword(password); } 和ORM的第二个构造函数: public User(String username, String password) { this.username = username; this.password = password; } (加上更多的领域没有显示) 通过这个设置,我可以给大部分代码提供一个友好的面孔,并让ORM通过所有的字段来从数据库中重新创建对象。 我的Kotlin代码有一个主要的构造函数: class User(var username: String, var name: String, password: String) 用一个初始值设定项来调用hashPassword并将其分配给一个私有属性。 我怎样才能正确地构造一个二级构造函数,这样我就不必散列来自数据库的值了?

Android – Kotlin – 对象必须声明为抽象或实现抽象成员

我为我的RecyclerView设置了一个ItemClickLister,像这样: ItemClickSupport.addTo(recyclerView!!).setOnItemClickListener( object : ItemClickSupport.OnItemClickListener { override fun onItemClicked(recyclerView: RecyclerView?, position: Int, v: View?) { val row = recyclerView!!.getChildAt(position) val el = row.findViewById(R.id.active_expandablelayout) as ExpandableLayout if (el.isExpanded) { el.collapse() } else { el.expand() } } } ) 使用我翻译成Kotlin的ItemClickSupport库。 我得到一个object (第2行)的错误,说: 对象必须声明为抽象或实现抽象成员。 我对Kotlin来说真的很陌生,在SO上我也找不到任何解决方案。 任何帮助是极大的赞赏。 编辑: 这是我的ItemClickSupport.kt : class ItemClickSupport private constructor(private val mRecyclerView: RecyclerView) { private […]

退货和内联

我试图find相当于这个Java返回的Kotlin: return new int[] {1, 2, 3}; 我试过只是宣布然后像这样返回: val returnArr: IntArray = intArrayOf(1, 2, 3) return returnArr 但是我得到一个警告,说:“variables只用于下面的回报,可以内联”。 内联是什么意思? 有没有办法在一条线上做到这一点?

javascript匿名对象在kotlin

如何在kotlin中创建JavaScript匿名对象? 我想创建这个对象传递给nodejs应用程序 var header = {“content-type”:”text/plain” , “content-length” : 50 …}

validation数据类参数Kotlin

如果我使用Kotlin数据类为我的值对象建模,那么处理validation的最佳方法是什么? 看起来像init块是唯一的逻辑地方,因为它在主构造函数之后执行。 data class EmailAddress(val address: String) { init { if (address.isEmpty() || !address.matches(Regex(“^[a-zA-Z0-9]+@[a-zA-Z0-9]+(.[a-zA-Z]{2,})$”))) { throw IllegalArgumentException(“${address} is not a valid email address”) } } } 使用JSR-303示例 缺点是需要加载时间编织 @Configurable data class EmailAddress(@Email val address: String) { @Autowired lateinit var validator: Validator init { validator.validate(this) } }

从Kotlin的同一行读取多个整数?

我正在做Hackerrank Kotlin的30天代码,我被困在第7天。 你怎么读一条线上的多个整数? 它如何被添加到一个数组,并显示在相反的? 我用Java解决了这个问题,但缺少Kotlin所需的语法 输入: 4 1 4 3 2 我的代码: fun main(args: Array) { val n = readLine()!!.toInt() var arr = Array(n) for(i in 0 until n) { arr[i] = readLine()!!.toInt() //Not Working? nor does readLine()!!.split(‘ ‘).toInt() } for(item in arr.size – 1 downTo 0) { print(“${item} “) } }

Kotlin:如何将一个对象函数作为parameter passing给另一个?

我正在努力学习functionKotlin,并写下了这个测试代码: import java.util.* data class BorrowerX(val name: String, val maxBooks: Int) { companion object { fun getName(br: BorrowerX): String = br.name fun findBorrowerX(n: String, brs: ArrayList): BorrowerX? { val coll: List = brs.filter { BorrowerX.getName(it) == n } if (coll.isEmpty()) { return null } else return coll.first() } fun findBorrowerX2(n: String, brs: ArrayList, f: (BorrowerX) […]

为什么公共内联函数可以调用私有构造函数?

我有我的类的私人构造函数,并实施援助对象的某种“通用构造函数” class Test private constructor(className: String) { companion object { // If I remove the internal it fails internal inline operator fun invoke(): Test { return Test(T::class.java.name) // why can I even call it? The constructor is private } } } 我甚至可以有一个公共的内联函数调用通用的构造函数 public inline fun test() = Test() // Why can I call it, it […]

聪明的演员是不可能的,因为…是一个可变的财产,可能已经改变了这个时间

我正在努力获得一个类,它结合了Kotlin列表,集合和地图。 我希望编写isScalar函数,如果对象只包含一个元素并写入,它应该返回true import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap import it.unimi.dsi.fastutil.objects.ReferenceArrayList import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet class Args { var list : ReferenceArrayList? = null var set : ReferenceOpenHashSet? = null var map : Reference2ReferenceOpenHashMap? = null fun isEmpty() : Boolean { return list === null && set === null && map === null } fun isScalar() : Boolean { if(list !== null […]

注释必须调用超级的接口函数

我正在创建接口和一些function,它有一个机构。 需要的是,实现此接口的类在执行其他代码之前,必须在覆盖函数中调用super。 我怎样才能做到这一点? interface Watcher { fun funWithoutBody() fun startWatching() { //do some important stuff which must be called } }