본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] Reflection Tutorial - Accessing Private Field, Private Method

by 돼지왕 왕돼지 2013. 12. 17.
반응형


 Java, Reflection Tutorial - Accessing Private Field, Private Method  


[Java] Reflection Tutorial - Accessing Private Field, Private Method


Reflection 으로 private field, method 들에도 접근할 수 있다.

private 에 대한 접근은 unit test 에서 유용하게 쓰인다.


VM 에 따라서 권한이 주어져야 접근 가능한 경우도 있다.




Accessing Private Fields


TestClass testClass = new TestClass();

Field privateField = testClass.getDeclaredField( String name );

privateField.setAccessible( true );

privateField.get( testClass );


setAccessible 을 통해 private, protected, package level 모두 접근 가능.

이것을 썼다고 해서 normal code 에서도 접근 가능한 것은 아니다. 오직 reflection 을 이용했을 때만 setAccessible 이 효력을 발휘한다.




Accessing Private Methods


Method method = TestObject.class.getDeclaredMethod( "methodName", params );

Method.setAccessible( true );

method.invoke( testObject, null );



반응형

댓글