转换Java来科特林

转换Java来科特林

问题描述:

我发展与轨道包科特林应用程序,但我有一些问题是界定演员Unresolved reference: T转换Java来科特林

class HelloActor():AbstractActor<T>,Hello 

应该是什么的T PARAM?在文档中:* @param <T> a class that represents the state of this actor.

+0

如果您尝试HelloActor ()'代替'会发生什么'HelloActor()'' –

+0

这种类型有一个构造函数,因此必须here' – lai0n

+0

@ lai0n是否使用IntelliJ IDEA的初始化?你可以用Java实现你的类,然后[转换成Kotlin](https://www.jetbrains.com/help/idea/2017.1/converting-a-java-file-to-kotlin-file.html) – ledniov

我不太了解演员的框架,但根据你在评论中给出的细节,我认为你应该用Any替换T.

你HelloActor应该是这样的:

class HelloActor(): AbstractActor<Any>,Hello 

在科特林,Any被映射到java.lang.Object,或AnyRef在Scala中,他们具有相同的功能和用途。可以使用ObjectAnyRef的地方使用Any。查看更多kotlin到Java类映射here

编辑:其实kotlin更类似于Java,所以你应该遵循Java教程而不是scala。

+0

Kotlin'Any'不等于Java'Object'。它只是在字节码中映射而已。而且,Kotlin'Any'没有Java'Object'和Scala'AnyRef'的功能和目的。 Kotlin“Any”更像Scala“AnyVal”。 “Any”是所有类型的超类型,包括像'Int'和'Double'这样的基本类型。 – Naetmul

+0

@Naetmul是的,我知道,但实际上他们可以被认为是一样的。 Kotlin没有强调原始类型和其包装类型之间的区别。与Java不同,它使用相同的名称,并且您无意显式使用封装类型(或反向)。所以很难说它是“AnyVal”或“AnyRef”,甚至是“Any”,因为在kotlin中没有“AnyVal”的地方。 – glee8e