2012-03-30 5 views

답변

3

예. 리플렉션을 사용하여 비공개 멤버를 편집 할 수도 있습니다. 일부 라이브러리 및 프레임 워크 (예 : HibernateWicket)가이 작업을 수행합니다. 당신이 정말로 좋은 이유가 없다면 나는 이것을 스스로하는 것을 권장하지 않을 것입니다.

import java.lang.reflect.Field; 

class Something { 
    private String name = "Hello"; 

    public void printName() { 
     System.out.println(name); 
    } 
} 

public class Example { 
    public static void main(String[] args) throws Exception { 
     Something s = new Something(); 
     s.printName(); 

     Field field = s.getClass().getDeclaredField("name"); 
     field.setAccessible(true); 
     field.set(s, "Goodbye"); 

     s.printName(); 
    } 
} 
+0

Thnkx ...을 보았습니까? 비록 바보 같은 qstn 이었지만 ... 샘플을 넣으려면 jus tryin이었습니다. 게시물 : P –

2

반성과 함께 직접 작업하지 않고도이 작업을 수행 할 수있는 BeanUtils를 살펴보십시오. 훨씬 쉽고 덜 장황 : 예제와 함께 http://commons.apache.org/beanutils/

좀 더 문서 : http://commons.apache.org/beanutils/v1.8.3/apidocs/org/apache/commons/beanutils/package-summary.html#package_description

당신이 정말로 반사와 손이 더러운 싶어하지 않는 한, 내가 BeanUtils 같은 추상화 계층에서 작동하도록 추천 할 것입니다.

관련 문제