2017-06-22 138 views
1

我發展與軌道包科特林應用程序,但我有一些問題是界定演員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

回答

2

我不太瞭解演員的框架,但根據你在評論中給出的細節,我認爲你應該用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