반사를 이용하여 자동으로 실체 대상으로 봉인하다

1872 단어 리플렉스
이 방법을 사용할 때 전달해야 하는 매개 변수의 이름은 반드시 줄 번호로 끝내야 한다. 줄 번호를 없애면 속성 이름이다. 예를 들어 페이지 전달name+rowNo라면 실체 대상의 속성 이름은name이어야 한다.코드는 다음과 같다.
// , bean 

	public List getObjectList(Class clazz,String[] rowNos) throws Exception{

		List objList = new ArrayList();

		for(int i=0;rowNos!=null && i<rowNos.length;i++){

			// 

			Object object = clazz.newInstance();

			// 

			Field[] fields = clazz.getDeclaredFields();

			

			StringBuffer buffer = null;

			// , 

			for(int j=0;j<fields.length;j++){

				// 

				String fieldName = fields[j].getName();

				// 

				String paraName = fields[j].getName()+rowNos[i];

				

				// 

				String value = getValueNull(paraName);

				if(value==null){

					continue;

				}

				

		        // 

				Object[] paramValue =new Object[1];

				if(fields[j].getType().toString().equals("class java.lang.String")){

					paramValue[0]=value;

				}

				if(fields[j].getType().toString().equals("class java.lang.Integer")){

					paramValue[0]=new Integer(value);

				}

				if(fields[j].getType().toString().equals("class java.lang.Double")){

					paramValue[0]=new Double(value);

				}

				if(fields[j].getType().toString().equals("class java.util.Date")){

					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

					paramValue[0]=sdf.parse(value);

				}

				

				// 

				Class[] paramType= {fields[j].getType()}; 

				

				// set 

				buffer = new StringBuffer("set");

		        buffer.append(fieldName.substring(0, 1).toUpperCase());  

		        buffer.append(fieldName.substring(1)); 

		        // 

		        Method method = clazz.getDeclaredMethod(buffer.toString(), paramType); 

		        // 

		        method.invoke(object,paramValue);

			}

			// list 

			objList.add(object);

		}

		return objList;

	}


좋은 웹페이지 즐겨찾기