2017-06-22 4 views
1

をkotlinするためにJavaの変換私は、軌道のパッケージにKotlinのアプリケーションを開発していますが、私は、Tのparamどうあるべきかの俳優Unresolved reference: T

class HelloActor():AbstractActor<T>,Hello 

を定義するためにいくつかの問題でね?文書内:* @param <T> a class that represents the state of this actor.

+0

'HelloActor()' –

+0

'このタイプは、コンストラクタを持っているので、lai0n @ – lai0n

+0

あなたはのIntelliJ IDEAを使用していhere'初期化する必要がありますか? Javaでクラスを実装してから[Kotlinに変換する](https://www.jetbrains.com/help/idea/2017.1/converting-a-java-file-to-kotlin-file.html) – ledniov

答えて

2

私はそのアクターのフレームワークをよく理解していませんが、あなたがコメントで与えた詳細を基にして、私はAnyのどちらかでTを置き換えるべきだと思います。

あなたHelloActorは次のようになります必要があります。kotlinで

class HelloActor(): AbstractActor<Any>,Hello 

Anyjava.lang.Object、またはScalaではAnyRefにマッピングされ、そして、彼らは同じ機能と目的を持っています。 Anyは、ObjectまたはAnyRefが使用される場合はどこでも使用できます。 Javaクラスマッピングhereのkotlinより多くの記事を参照してください。

EDIT:実際にkotlinはJavaに似ていますので、scalaの代わりにJavaチュートリアルに従ってください。

あなたは `HelloActor ()`の代わりにしようとすると何が起こる
+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