我有这样的抽象令牌类: abstract class Token(var index: Int = 0) { open fun merge(toMerge: Token): Token? { return null } } 我想inheritance数据类中的索引属性,如下所示: data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index) 但它给我错误Data class primary constructor must have only property (val / var) parameters 我需要做什么来解决这个问题?
假设我们有以下扩展function: class Helper { companion object { fun Int.plus(value: String) = Integer.valueOf(value).plus(this) } } 如何从另一个类的Helper类访问plus扩展function。 有没有一种方法可以让我们做这样的事情: class OtherClass { fun someMethod() { val eight = 7.Helper.Companion.plus(“1”) } }
我试图使用unit testing规则注释,Android Studio没有突出显示任何错误: @Rule val htmlManager = HtmlManager() 然而在执行测试之后,发生以下错误: org.junit.internal.runners.rules.ValidationError:@Rule“htmlManager”必须是公共的。 如何解决这个问题?
根据我在前面的问题中收到的建议,我用“别名”缩短了一些常用的外部函数(我不能控制的)的名字。 这对扩展function很好用; 不过,我还有一些顶级函数,我想要别名。 对于一个简单的例子,考虑generateSequence函数。 我想能够做到这一点: // DOES NOT COMPILE inline val seq:(()->T?)->Sequence get() = ::generateSequence …但是我不能这样做,因为在接收器types中必须使用generics,正如在这个答案中所解释的那样。 是否有任何其他方式来创建一个保留内联的顶级function(需要generics)的别名? 编辑:我试过使用Any? 和明星投影后发布的问题,但我仍然不认为这是一个很好的答案: inline val seq:(()->Any?)->Sequence get() = ::generateSequence 这似乎boptimalsu,因为它妥协对序列的元素types的types检查,正确的? 关于什么可以工作的其他答案/想法?
当我更新项目到AndroidStudio 3unit testing变成runnig比AndroidStudio 2慢(约6 mimutes)。最近,我更新项目到AndroidStudio3.1,但测试运行时间保持不变。
我有两个class。 一个是另一个的父母。 我正在实例化Foo中的HashMap的obect,并尝试访问该对象,但在类Bar中,我得到的presenter as Map不presenter as HashMap presenter as Map的引用,因此我的HashMap方法调用都没有工作。 我已经阅读了文档,并试图在init{…}里面指定this.presenter ,就像在Java中一样,但是我仍然无法从子类的内部访问HashMap 。 open class Foo { var presenter = Map init { presenter = HashMap } } open class Bar : Foo() { //this is trying to call .put on the Map interface, so I get an error presenter.put(someData) }
一个人如何在Kotlin中挥霍? volatile public var tmpEndedAt: Long? = null 给我的错误:“未解决的参考:易变”。
如果一组内部类是包含类的外部抽象的唯一实现(子类),那么如何实例化它们? abstract class A { inner class A1 : A() inner class A2 : A() } 换句话说, 构造A1或A2的实例的语法是什么? 编辑: …在A类的身体之外
我是gradle和kotlin的新手 当我建立语法错误文件使用gradle build它只是显示 Execution failed for task ‘:compileKotlin’. > Compilation error. See log for more details 我如何得到像使用kotlinc哪一行的语法错误? PS:使用vscode,所以我需要它 编辑 对不起,我错过了错误信息,因为gradle和kotlinc不同 gradle这个: PS C:\PlayGround2> gradle build e: C:\PlayGround2\src\main\kotlin\Main.kt: (26, 1): Expecting a top level declaration > Task :compileKotlin Using kotlin incremental compilation … kotlinc: PS C:\PlayGround2\src\main\kotlin> kotlinc .\Main.kt Main.kt:26:1: error: expecting a top level declaration } […]
我很困惑这些方法的优点和缺点(假设我需要使用index和product ): products.forEachIndexed{ index, product -> … } for ((index, product) in products.withIndex()) { … } 这里的products是一个简单的集合。 是否有任何表现/最佳实践/等论点比较喜欢一个?