JAva反射小例

2346 ワード

1.反射によってオブジェクトを動的に取得するには:
a.
/**
	 *                                
	 * 
	 * @param ClassName      
	 * @return              
	 * @throws Exception
	 */
	private static Object getObjectByConstructor(String ClassName)
			throws Exception {
		Object object = Class.forName(ClassName).getConstructor().newInstance();
		return object;
	}

 
b.
/**
	 *                     
	 * @author Jeelon
	 * @param ClassName
	 * @return Object
	 */
	private static Object getObjectByConstructorParameter(String ClassName) throws Exception {
		return Class.forName(ClassName).getConstructor(new Class<?>[]{int.class, String.class}).newInstance(22, "Jeelon");
	}

 
 
 
 
2.オブジェクト、 、 を す. でオブジェクトを する な で、 をプロパティに り てます.
は、プロパティにフラグのsetメソッドが です.
/**
	 *       ,   ,   。             ,      。   :        set  。
	 * @param obj      
	 * @param fieldName     
	 * @param value  
	 * @throws Exception    
	 */
	public void setProperty(Object obj, String fieldName, String value) throws Exception {
		//            
		String firstLetter = fieldName.substring(0, 1).toUpperCase();
		//  fieldName    setXXX()        :set + S + tuAddress   ---->  setStuAddress
		String setMethodName = "set" + firstLetter + fieldName.substring(1);
		//  fieldName    getXXX()        :set + S + tuAddress   ---->  getStuAddress
		String getMethodName = "get" + firstLetter + fieldName.substring(1);
		//     Field   ,       Class                   。
		Field field = obj.getClass().getDeclaredField(fieldName);
		//  fieldName   set       setXXX();setMethodName-->      field.getType()-->    
		Method setMethod = obj.getClass().getMethod(setMethodName, field.getType());
		//  fieldName   get       getXXX();
		Method getMethod = obj.getClass().getMethod(getMethodName, null);
		//         setMethod    
		setMethod.invoke(obj, value);
	}