2010-12-01 6 views
4

안녕하십니까 : 우리의 응용 프로그램에서는 데이터베이스에서 데이터를 검색했습니다. 예를 들어 테이블에 columes : id, name, age, address, email가 있습니다.동적으로 객체에 대한 속성을 추가하십시오.

그러면 우리는 클라이언트에 따라 이러한 속성 중 일부를 얻을 것입니다.

클라이언트가 id, name을 필요로하면 클라이언트에 id, name, age가 필요하면 id 이름을 얻습니다. id, name, age를 얻습니다.

이제 이러한 속성을 래핑하는 클래스를 만들려고합니다. 그러나 우리는 어떤 필드가 요구되는지 정확히 알지 못합니다.

String[] requestPro={"name","id"}; //this field is specified by client 
Map<String, Object> map=new HashMap<String, Object>(); 
Entity en=Entity.newInstance(); 
for(String p:requestPro){ 
    map.put(p, BeanUtils.getProperty(en, p)); 
} 

여기지도를 클래스로 바꿀 수 있습니까?

답변

2

제대로 이해한다면 클래스에 속성을 동적으로 추가하거나 클래스의 특정 인스턴스에 속성을 동적으로 추가하려고합니다. 전자가 가능하다. Groovy에서는 런타임에 동작을 할당 할 수있는 모든 클래스에 대한 메타 클래스 객체가 있으며, JavaScript는 객체의 프로토 타입과 객체 자체에 동작을 할당 할 수 있습니다. 그러나 어느 버전도 Java에서 가능하지 않으므로 Map 또는 유사한 구조를 사용하는 것이 Java에서해야 할 일입니다.

+0

:(고맙습니다.) – hguser

+1

자바로이 작업을 수행 할 수 있습니다. http://stackoverflow.com/questions/2215536/java-dynamic-properties – HDave

+1

@HDave Funny,이 질문에 대한 두 가지 대답 그리고 파스칼의 대답은 바이트 코드 조작 라이브러리 인 CGLib에서만 작동하므로 클래스를 즉시 수정하고 클래스 로더를 변조 할 준비가되면 Java로 할 수 있습니다. –

관련 문제