いつもお世話になっております。
Javaの記述の仕方で分からない事があります。
ご存知の方がいらっしゃれば教えて頂けますでしょうか。
【ご質問】
以下のプログラムを記述すると
☆1で警告が表示されます。
警告を解消する為には、どのように修正すればよいのでしょうか。
JAVAのバージョンは1.8です。
public Map<Object,Object> getTantousya(){ String cacheKey = "tantousya:N"; Map<Object,Object> result = (Map)masterMap.get(cacheKey); ☆1 if(result == null){ result = key_value_service.getTantousya(); masterMap.put(cacheKey, result); } return result; }
(警告の内容)
☆1
型の安全性: 型 Map の式は、未検査の型変換を使用して Map<Object,Object> に準拠するようにする必要があります
(補足)
1.masterMapは、以下の様に宣言しております。
private final HashMap<String,Object> masterMap = new HashMap<>();
2.key_value_service.getTantousya()、以下の様に宣言しております。
public Map<Object,Object> getTantousya() ``` 3.☆1の箇所を ```ここに言語を入力 Map<Object,Object> result = (Map<Object,Object>)masterMap.get(cacheKey); ``` に、変更すると、以下の警告が表示されます。 この行に複数マーカーがあります - Map は raw 型です。総称型 Map<K,V> への参照は、パラメーター化する必要があります - 型の安全性: Object から Map<Object,Object> への未検査キャスト 以上です。 よろしくお願いいたします。 (追記) Map<Object, Object>には、 以下のどちらかの戻り値を設定いたします。 ```ここに言語を入力 public Map<Object,Object> getQuerykeyValue(Integer renban){ List<KeyValue> list = keyValueMapper.querykeyValue(renban); Map<Object,Object> result = new HashMap<>(); for(int i=0;i<list.size();i++){ KeyValue keyvalue = (KeyValue)list.get(i); result.put(keyvalue.getKey(), keyvalue.getValue()); } return result; } public Map<Object,Object> getQuerykeyValueInteger(Integer renban){ List<KeyValue> list = keyValueMapper.querykeyValueInteger(renban); Map<Object,Object> result = new HashMap<>(); for(int i=0;i<list.size();i++){ KeyValue keyvalue = (KeyValue)list.get(i); result.put(keyvalue.getKey(), keyvalue.getValue()); } return result; } 【KeyValue】 public class KeyValue implements Serializable { static final long serialVersionUID = 1L; private Object key; private Object value; getter/setter } 【querykeyValueで実施するSQL】 <select id="querykeyValue" resultType="KeyValue"> SELECT key AS "key", value AS "value" FROM key_value_tbl WHERE renban = #{renban} ORDER BY sort_no </select> 【querykeyValueIntegerで実施するSQL】 <resultMap id="ResultMapInteger" type="KeyValue"> <result property="key" column="key" javaType="Integer" /> <result property="value" column="value" javaType="String" /> </resultMap> <select id="querykeyValueInteger" resultMap="ResultMapInteger"> SELECT key AS "key", value AS "value" FROM key_value_tbl WHERE renban = #{renban} ORDER BY sort_no </select> 【key_value_tblテーブルの型】 key VARCHAR value VARCHAR
回答3件
あなたの回答
tips
プレビュー