vai*_*hav 5 java generics parameterized compiler-warnings json-simple
我刚刚遇到需要将数据放入JSONObject的情况,而这样做我收到了编译器的警告.
类型安全:方法put(Object,Object)属于原始类型HashMap.应该参数化对泛型类型HashMap的引用.
我试图参数化JSONObject但它给了我错误.
我正在使用以下代码,其中option是Object.
JSONObject additionalDetails = new JSONObject();
additionalDetails.put("showOppo", option.isShowOppo());
additionalDetails.put("showCont", option.isShowCont());
additionalDetails.put("contActionTaken", option.isConActionTaken());
additionalDetails.put("oppoActionTaken", option.isOppoActionTaken());
Run Code Online (Sandbox Code Playgroud)
这是怎么造成的,我该如何解决?
小智 10
我不知道您是否仍然存在此问题,但我认为它将使遇到此问题的其他人受益。
我遇到了这个问题,过了一会儿,我设法使用HashMap将其修复。
HashMap<String,Object> additionalDetails = new HashMap<String,Object>();
additionalDetails.put("showOppo", option.isShowOppo());
additionalDetails.put("showCont", option.isShowCont());
additionalDetails.put("contActionTaken", option.isConActionTaken());
additionalDetails.put("oppoActionTaken", option.isOppoActionTaken());
JSONObject additionalDetailsJSON = new JSONObject(additionalDetails);
Run Code Online (Sandbox Code Playgroud)
如果您不知道哈希图将保留哪种类型,或者如果它包含多种类型,则使用Object更为安全。否则请使用正确的类型。
此解决方案适用于JSON简单1.1.1和Java 1.5及更高版本。
您正在使用JSON Simple.它JSONObject源自HashMap但不幸的是不使用泛型参数(可能是因为它是在预通用时间创建的).因此,您看到的警告与以下内容相同:
HashMap map = new HashMap();
map.put("showOppo", option.isShowOppo());
Run Code Online (Sandbox Code Playgroud)
不幸的是你无法避免警告.
我建议切换到另一个JSON库,如GSON或Jackson.
| 归档时间: |
|
| 查看次数: |
8005 次 |
| 最近记录: |