转换Java来科特林
我发展与轨道包科特林应用程序,但我有一些问题是界定演员Unresolved reference: T
转换Java来科特林
class HelloActor():AbstractActor<T>,Hello
应该是什么的T PARAM?在文档中:* @param <T> a class that represents the state of this actor.
我不太了解演员的框架,但根据你在评论中给出的细节,我认为你应该用Any
替换T.
你HelloActor应该是这样的:
class HelloActor(): AbstractActor<Any>,Hello
在科特林,Any
被映射到java.lang.Object
,或AnyRef
在Scala中,他们具有相同的功能和用途。可以使用Object
或AnyRef
的地方使用Any
。查看更多kotlin到Java类映射here。
编辑:其实kotlin更类似于Java,所以你应该遵循Java教程而不是scala。
Kotlin'Any'不等于Java'Object'。它只是在字节码中映射而已。而且,Kotlin'Any'没有Java'Object'和Scala'AnyRef'的功能和目的。 Kotlin“Any”更像Scala“AnyVal”。 “Any”是所有类型的超类型,包括像'Int'和'Double'这样的基本类型。 – Naetmul
@Naetmul是的,我知道,但实际上他们可以被认为是一样的。 Kotlin没有强调原始类型和其包装类型之间的区别。与Java不同,它使用相同的名称,并且您无意显式使用封装类型(或反向)。所以很难说它是“AnyVal”或“AnyRef”,甚至是“Any”,因为在kotlin中没有“AnyVal”的地方。 – glee8e
如果您尝试HelloActor()'代替'会发生什么'HelloActor()'' –
这种类型有一个构造函数,因此必须here' – lai0n
@ lai0n是否使用IntelliJ IDEA的初始化?你可以用Java实现你的类,然后[转换成Kotlin](https://www.jetbrains.com/help/idea/2017.1/converting-a-java-file-to-kotlin-file.html) – ledniov