16

という名前のハッシュテーブルがありtableます。タイプ値はlongです。を使用して値を取得しています.values()。今、これらの値にアクセスしたいと思います。

Collection val = table.values();

Iterator itr = val.iterator();
long a  =   (long)itr.next();

しかし、取得しようとすると、型objectから に変換できないため、エラーが発生しlongます。どうすれば回避できますか?

4

7 に答える 7

35

これを試して:

  Long a = (Long)itr.next();

最終的には Long オブジェクトになりますが、オートボクシングを使用すると、プリミティブ long のように使用できます。

別のオプションは、ジェネリックを使用することです。

  Iterator<Long> itr = val.iterator();
  Long a = itr.next();
于 2010-02-28T13:45:47.200 に答える
4

試す :long a = ((Long) itr.next()).longValue();

于 2010-02-28T13:48:37.537 に答える
3

Java 5の新しい Generics機能を使用する必要があります。

コレクションから要素を取り出すときは、コレクションに格納されている要素の型にキャストする必要があります。不便な上に、これは安全ではありません。コンパイラは、キャストがコレクションの型と同じであることを確認しないため、実行時にキャストが失敗する可能性があります。

Generics は、チェックできるように、コレクションの型をコンパイラに伝える方法を提供します。コンパイラは、コレクションの要素の型を認識すると、コレクションが一貫して使用されていることを確認し、コレクションから取得される値に正しいキャストを挿入できます。

この簡単なハウツーまたはこのより完全なチュートリアルを読むことができます。

于 2010-02-28T13:50:02.433 に答える
1

私の場合、フレックス クライアントから取得したオブジェクトの配列があります。

数値は Java によって int として解釈されることもあれば、long として解釈されることもあります。

この問題を解決するには、次のように「toString()」関数を使用します。

public Object run(Object... args) {

  final long uid = Long.valueOf(args[0].toString());
于 2012-10-14T09:53:53.340 に答える