2017-07-19 9 views
1

私はjava.util.HashMap$Nodeオブジェクトを返すライブラリメソッドを使用します。
MapHashMap、またはIteratorにキャストしようとしましたが、すべて失敗しました。
タイプjava.util.HashMap$Nodeのオブジェクトをどのようなデータ型にキャストできますか?

+3

これらのクラスではないため、他のものにキャストすることはできません。これは 'HashMap'の内部で生きている内部の' Node'型です。私はあなたがそれを得ることができることに驚いている* [そのクラスはパッケージプライベートだから](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40 -b25/java/util/HashMap.java?av = f#278)。 – Makoto

+5

XYの問題のようです。なぜそれをやりたいのでしょうか、最初に内部型のオブジェクトにどのようにアクセスできましたか? – Clashsoft

+0

本当に何をしようとしていますか?あなたが使っている図書館の目的は何ですか? 'Node'オブジェクトで何をしたいですか?ここでキャスティングは間違った解決策です。達成したいことを説明すれば、正しい解決策を見つけるのを手助けすることができます。 –

答えて

6

HashMap.NodeMap.Entryを実装しているので、それをキャストできます。

+1

内部クラスなので、これは将来のJavaリリースで変更される可能性があります。これに頼るのは良い考えではありません。 – VGR

+0

@VGRそれは依存していますが、私が検討しているユースケースは、問題のライブラリが単純な 'Object'を返し、' Map.get'のように)ジェネリックを使わないので、 'Map.Entry'は有効です戻り値 – kewne

1

オブジェクトは、基本クラスまたはインターフェイスのいずれかにのみキャストできます。あなたが試したクラスまたはインターフェイスのいずれにもjava.util.HashMap$Nodeをキャストすることはできません。

使用するライブラリがHashMapの内部実装の詳細であるため、このタイプのオブジェクトを返すことは非常に奇妙です。ソースコードにアクセスできる場合はライブラリを変更するか、必要なものを達成するために別のライブラリを見つけることをお勧めします。

関連する問題