0

タイプ の dataMap でHashMap<String, String>、このキーと値のペア、文字列、およびbyte[]サイズ 6 を持つユーザー日付のマップを取得しています。

誰かがこれを前に見たことがありますか、または何をすべきか知っていますか?

4

2 に答える 2

2

あなたのコードには非常に怪しいものがあります。

これらのステートメントは、MappedRecordを実装する必要があることを意味しますMap<String, String>

record = (MappedRecord) obj;
item = new HashMap<String, String>();
item.putAll(record);

しかし、あなたはこれが値型が。であるエントリを挿入していると言いますbyte[]。これは可能ですが、どこか/どういうわけか以前にそのエントリをMappedRecordオブジェクトに追加したことを意味する必要があります。そのためには、「未チェックの変換」警告を抑制または無視する必要があります。

putAll(コードは、追加するエントリがitem正しいキーと値の型を持っていることをチェックしないことに注意してください。それはできません!のコードHashMap.putAllは、型消去のためにパラメータタイプがどうあるべきかを知りません... 。むしろ、putAllコードは実際のキーと値のタイプが正しいことを前提としています。警告を無視/抑制しない限り、それらは...である必要があります。)

MappedRecordいずれにせよ、クラスのコードとMappedRecord、偽のエントリを含むインスタンスを作成しているコードを確認しないと、これを適切に診断することはできません。

于 2012-09-30T04:09:12.840 に答える
0

おそらくこれはJavaです。

宣言HashMap<String, String>では、HashMap が String->String であることが期待されると述べられていますが、コンパイラでの静的型チェックは気密ではありません (既存の言語に追加された一種のクルージュであることを考えると)。

そして、(A) あなたが持っている HashMap が本当に でありHashMap<String, String>、(B) 誰かが配列を に挿入していないことを保証する動的型チェックはありませんHashMap<String, String>。これは、実際に持っているのは であるHashMap<Object, Object>ため、動的チェックを実装する方法がないためです。

于 2012-09-30T03:09:36.177 に答える