2016-08-30 17 views
2

文字列のリストをMapに変換するJavaからアクセス可能なKotlinユーティリティを作成したいと思います。これまでのところ私は書いた:Kotlinマップの文字列配列をマップする<String、Any!>

class Utils { 
    companion object { 
     @JvmStatic fun values(item: GSAItem): Map<String, Object> { 
      return item.itemDescriptor.propertyNames.map {it -> Map.Entry<String, Any!>(it, item.getPropertyValue(it)) };   } 
    } 
} 

をしかし、私はエラー

Error:(16, 74) Kotlin: Unresolved reference: Entry 

GSAItem.getPropertyValueを取得しています、引数と戻りオブジェクトとして文字列を取るJavaメソッドです。その後、私はJava 8からcollect関数の同等のものを見つける必要があると思う?

item.itemDescriptor 
    .propertyNames 
    .map { name -> name to item.getPropertyValue(name) } 
    .toMap() 
+0

'KeyStore'クラスとは何ですか? – yole

+0

@yole私はこれを[KeyStore](https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html)と推測しています。 'KeyStore.Entry'はマーカーインターフェースです。代わりに、 'PrivateKeyEntry'、' SecretKeyEntry'、または 'TrustedCertificateEntry'を使用することを意味しましたか? – Enrico

+0

おっと、申し訳ありません。私はさまざまなインポートを試して、最終的に間違ったコードを貼り付けました。元のバージョンと一致するように編集しました。 –

答えて

1

Map.Entry - stdlib - Kotlin Programming Languageinterfaceであり、そのようなものとして、それはあなたがエラー(おそらくない最良のメッセージ)を取得している理由であるコンストラクタを持っていません。このような何かについてどのように

+0

偉大な、丁寧な説明とヒントをありがとう。 –

1

。あなたは、実装を見つけ、あなた自身の作る、またはその代わりにassociateを使用することができます:あなたはjava.lang.Objectの代わりにAnyまたはAny?を使用する必要があります

class Utils { 
    companion object { 
     @JvmStatic fun values(item: GSAItem): Map<String, Any?> { 
      return item.itemDescriptor.propertyNames.associate { it to item.getPropertyValue(it) } 
     } 
    } 
} 

注意。

+0

ありがとうございました!あなたとmfulton26の両方のコードは動作しますが、私は1つの答えしか受け入れられません。 MapEntryを直接作成することはできません。 –

+2

あなたは好きなだけ多くの答えをupvoteすることができます –

+0

@ LanceJavaはい、ありがとう、ありがとう。私は "あまりにも若い"と私のupvotesはまだ見ていないので、すでにそれをやった:) –

関連する問題