티스토리 뷰
728x90
반응형
Type Safety : unchecked
말 그대로 type 의 안정성을 보장할 수 없을 때
이 경고가 발생한다.
내 경우에는 intent 로
1 | ArrayList<Person> | cs |
이와 같은 데이터를 넘겨주어
전달받은 Activity 에서
1 | ArrayList<Person> persons = (ArrayList<Person>) getIntent().getSerializableExtra("persons"); | cs |
다음과 같이 type cast 를 했을 때 해당 경고가 발생했다.
Person 은 Serializable 을 implements 한 class 이다.
일반적으로 Java 컴파일러는 실행되는 모든 시점에서 각 변수의 유형을 알고있다.
호환되지 않는 유형으로 작동하면 프로그램이 컴파일되지 않기에 해당 경고를 보여준다.
만약 지정한 형식의 개체만 포함될 것이라는 확신이 들면
1 | @SuppressWarnings("unchecked") | cs |
을 이용해서 해당 경고를 무시해도 된다.
* @SuppressWarnings()
컴파일러가 일반적으로 경고하는 내용을 제외시킬 때 쓰인다.
하지만 근본적인 해결책은 아니며, 프로그래머가 항상 해당 타입을 의식하고 있어야 한다.
그래서 나는 이와 같은 방식으로 해결하였다.
1 2 3 4 5 6 7 8 9 | ArrayList<Person> persons = new ArrayList<>(); Serializable serializable = intent.getSerializableExtra("persons"); if (serializable instanceof ArrayList<?>) { for (Object obj : (ArrayList<?>) serializable) { if (obj instanceof Person) { persons.add((Person) obj); } } } | cs |
+ References
https://jinwoonote.tistory.com/entry/SuppressWarnings-%EC%9D%B4%EA%B1%B4-%EB%AD%90%EC%A7%80
http://www.mimul.com/pebble/default/2009/12/04/1259937540000.html
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java] String.contains() with empty String, return true (1) | 2019.10.03 |
---|---|
[Java] JDK 6 이후, Timezone.setDefault() (0) | 2019.08.25 |
[Java] :: ( 더블콜론 ) (0) | 2018.12.12 |
[Java] Iterator (0) | 2018.12.12 |
[Java] parseInt() 와 intValue() 의 차이 (0) | 2017.11.01 |
공지사항
최근에 올라온 글