7

これは、以下のようにマップを実装しようとすると、今日得られる奇妙なエラーです。

Map<String, Integer> cache = new HashMap<String, Integer>();

私はJDK 1.7を使用していますが、なぜこのエラーが発生したのかわかりません。キャストを追加して上記の行を変更すると、エラーが削除されます。この質問を投稿する前に、関連する投稿をstackoverflowで見ましたが、奇妙な問題のようです。

Map<String, Integer> cache = (Map<String, Integer>) new HashMap();
4

12 に答える 12

2

間違ったものをインポートしていると確信していますHashMapjava.utilそこで提示したコードのパッケージを使用する必要があります。

インポートステートメントを確認せずにこれ以上お手伝いすることはできません.

于 2013-09-24T15:01:01.953 に答える
0

これを試してください:

  1. 新しいクラスを作成し、同じパッケージに別の一意の名前を付けます

  2. インポート -import java.util.*;またはimport java.util.HashMap;

  3. HashMap を次のように作成します。

HashMap<Integer,String> map=new HashMap<Integer,String>();(古い冗長な方法)

また

HashMap<String, Integer> map = new HashMap<>(); (より良い方法)

また

Map<String, Integer> map = new HashMap<>(); (最良の方法)

コンパイルして実行

于 2020-10-15T12:08:46.667 に答える
0

これは、コンパイル先の Java バージョンが JDK より低い場合に発生する可能性があります。Eclipse が呼ぶ「コンパイラー準拠レベル」が十分に高いことを確認してください。これは私に起こりました。JDK が Java 7 のときに Eclipse で問題が発生しましたが、コンパイラの準拠レベルは 1.4 でした。私の Eclipse では、この設定は Project->Properties->Java Compiler にあります。コンパイラの準拠レベルを 6.0 に上げたところ、問題はなくなりました。

于 2021-02-16T07:40:53.050 に答える
0

上記の解決策のいずれも機能しない場合、このエラーが発生する唯一の理由は、util または lang ライブラリにある既存のクラスに似た名前を class_name に付けた可能性があるためです。

于 2016-08-23T20:27:14.457 に答える