Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- mco
- Java
- 객체지향
- 금리인상
- 현금흐름표
- 제태크
- javascript
- 접근제어자
- object
- etf
- 배당성장
- 다형성
- 기업분석
- 잉여현금흐름
- XLF
- 주린이
- 금리인하
- 인플레이션
- 주식
- 자바
- StringBuffer
- S&P500
- 무디스
- 미국주식
- 백준
- 그리디 알고리즘
- 알고리즘
- 오버라이딩
- FCF
Archives
- Today
- Total
오늘의하루
Type safety: Unchecked cast from ~ 본문
발생원인
Object 타입으로 받아온 값을 List<Test>로 형변환을 시도하던 중 발생하였다.
이는 타입 안전성(Type safety)은 컴파일 중에 타입 제약 조건을 강제하여 런타임 중에 타입 오류를 방지하는 것을 의미하여 예외가 아닌 경고이다.
해결방법
- SuppressWarnings 어노테이션 붙이기
- SuppressWarnings 관련 옵션은 링크에서 확인 가능합니다.
@Getter
public class Tistory{
Object data;
}
@SuppressWarnings("unchecked")
List<Test> vo = (ArrayList<Test>) tistory.getData();
- 개발자 답게 타입을 정확히 확인하고 형변환 하기
- 항상 타입을 정확히 하는 것이 좋아 보인다.
@Getter
public class Tistory{
Object data;
}
List<Test> list = new ArrayList<>();
if(tistory.getData() instanceof ArrayList<?>){
for(Object obj : (ArrayList<?>)tistory.getData()){
if(obj instanceof LinkedHashMap){
list.add(convertObjToType(LinkedHashMap<?,?> obj, Test.class));
}
}
}
private <T> T convertObjToClassType(LinkedHashMap<?, ?> map, Class<T> clazz) {
try {
Constructor<T> constructor = clazz.getConstructor();
T clazzInstance = constructor.newInstance();
for (Map.Entry<?, ?> entry : map.entrySet()) {
String key = (String) entry.getKey();
Object value = entry.getValue();
try {
Field field = clazz.getDeclaredField(key);
field.setAccessible(true); // 필드 접근을 활성화합니다.
field.set(clazzInstance, value); // 필드에 값을 설정합니다.
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
return clazzInstance;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
'JAVA' 카테고리의 다른 글
Java Stream이란? feat. 메모리 로드, 병렬 처리, 연산 흐름 (0) | 2024.05.23 |
---|---|
AOP - java.lang.ClassCastException (0) | 2024.02.23 |
(객체 지향 설계) 순수 자바로 DIP 원칙 지키기 (0) | 2023.08.19 |
Java Scanner 몰랐던 부분 (0) | 2023.01.30 |
[Java]import never used 경고문구 (0) | 2023.01.27 |
Comments