Type safety: unchecked cast from Object to
Starting with Java 5.0, the warning “Type safety: unchecked cast from Object to ~.
The “~” is a concrete generic type.
For example, “Map<String,String>”.
An easy workaround for this error is to append an annotation above the method.
@SuppressWarnings("unchecked")
Here is an example
package com.confrage; import java.util.HashMap; import java.util.Map; public class TestMain { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { Object obj = new Object(); Map<String, String> map = new HashMap<String, String>(); map = (Map<String, String>) obj; } }
What is generic type (generics)?
Types such as List<String>やMap<String,String>.
How to handle warnings
Only for one autoCast method Add @SuppressWarnings(“unchecked”) and wrap and code for methods that return an Object class, etc. as follows.
package co.confrage; import java.util.HashMap; import java.util.Map; public class TestMain { /** * @param args */ public static void main(String[] args) { Object obj = new Object(); Map<String, String> map = new HashMap<String, String>(); map = autoCast(obj);// Wrap. } @SuppressWarnings("unchecked") public static <T> T autoCast(Object obj) { T castObj = (T) obj; return castObj; } }
The above is a sample, but methods such as the autoCast method should be written in a common or parent class.
Here is an example of converting an object to a List.
public <T> List<T> castToList(Object target) { return objectMapper.convertValue(target, new TypeReference<List<T>>() {}); }
コメント