자바 반사 로 class 속성 값 을 가 져 오 는 실현 코드
코드 는 다음 과 같다.
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class ParameterBase
{
/**
* Get Class field and value Map
* @return
*/
public Map getClassInfo()
{
Map fieldsAndValues = new HashMap();
Field [] fields = this.getClass().getDeclaredFields();
for(int i=0; i< fields.length; i++)
{
Field f = fields[i];
String value = getFieldValue(this ,f.getName()).toString();
fieldsAndValues.put(f.getName(),value);
}
return fieldsAndValues;
}
private String getFieldValue(Object owner, String fieldName)
{
return invokeMethod(owner, fieldName,null).toString();
}
/**
*
* Field getField
*
* @param owner
* @param fieldName
* @param args , null
* @return
*/
private Object invokeMethod(Object owner, String fieldName, Object[] args)
{
Class extends Object> ownerClass = owner.getClass();
//fieldName -> FieldName
String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);
Method method = null;
try
{
method = ownerClass.getMethod("get" + methodName);
}
catch (SecurityException e)
{
//e.printStackTrace();
}
catch (NoSuchMethodException e)
{
// e.printStackTrace();
return "";
}
//invoke getMethod
try
{
return method.invoke(owner);
}
catch (Exception e)
{
return "";
}
}
}
클래스 User 를 ParameterBase 에 계승 하고 테스트 코드 를 쓰 십시오.
public class User extends ParameterBase
{
String userName ;
String passWorld;
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getPassWorld()
{
return passWorld;
}
public void setPassWorld(String passWorld)
{
this.passWorld = passWorld;
}
public static void main(String[] args)
{
User u = new User();
u.passWorld = "123";
u.userName = "aaaaa";
System.out.println(u.getClassInfo().toString());
}
}
프로그램 출력
{passWorld=123, userName=aaaaa}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.