我想通过添加一些线程安全功能来实现kotlin的MutableList接口,如果我想实现MutableList接口并仅覆盖对线程不安全的东西,因此我选择了委托。
每次使用List.toMutableList()都会返回一个新的MutableList实例,其中包含数据中的所有项目。
class ThreadSafeList<E> constructor(data: List<E>): MutableList<E> by data.toMutableList() //different reference (new object created when using toMutableList())
{
private val data = data.toMutableList() //different reference (new object created when using toMutableList())
...
//default constructor when no argument is supplied
constructor(): this(listOf())
//override, locks & stuffs for thread safety
}
期望: 我想在构造函数本身中将List强制转换为MutableList,以便实现委托与val数据保持相同的引用,但是我找不到执行该操作的方法。
答案 0 :(得分:1)
经过大量研究,我终于找到了一种方法。
我将解释我是如何做到的,这可能会帮助任何遭受此问题困扰的人,
route('users.index');
//output: example.com/admin/users
在这里,我所做的也许是一个hack,但它的工作原理就像是一种魅力。这就是为什么我爱Kotlin。
您可以像平常一样创建对象,创建对象时也不需要放入in invoke乐趣,因为它会在将列表传递给对象时由kotlin编译器自动完成。