괴도군의 블로그

[JAVA]unmodifiableList metaprograming add values (메타프로그래밍으로 값 추가하기) 본문

#프로그래밍/JAVA

[JAVA]unmodifiableList metaprograming add values (메타프로그래밍으로 값 추가하기)

괴도군 2015. 8. 20. 16:55
반응형

* unmodifiableList metaprograming add values (메타프로그래밍으로 값 추가하기)



ArrayList<String> original = ArrayList<String>();

original.add("no.1");

original.add("no.2");


List<String> list =  Collections.unmodifiableList(original);


Class clazz0 = list.getClass();

Class clazz = clazz0.getSuperclass();


Field ff = clazz.getDeclaredField("list");

ff.setAccessible(true);


ArrayList<String> results = (ArrayList<String>)ff.get(list);


results.add();



* unmodifiableList 구별하는법

1. 원래의 값이 아닌지 구분한다.

  - ArrayList라면 (!(대상 instanceof ArrayList))로 구분한다.


2. 클래스이름으로 확인한다.

  - Collections.unmodifiableList(new ArrayList<Object>()).getClass().getName().equals("java.util.Collections$UnmodifiableRandomAccessList")

  - 대상.getClass().getName().equals("java.util.Collections$UnmodifiableRandomAccessList")

반응형
Comments