1. 程式人生 > >JAVA反射獲取屬性註解,類方法

JAVA反射獲取屬性註解,類方法

                List<TechnicalParam> technicalParams=extAsset.getTechnicalParam();
		TechnicalParam technicalParam=new TechnicalParam();
		Field[] fieldst = new TechnicalParam().getClass().getDeclaredFields();//獲取該類的全部屬性欄位
		for(TechnicalParam technicalParamss:technicalParams){
			baowen.append("<mdm:TechnicalParam>");
		for(Field field:fieldst){//遍歷集合
			for(Annotation annotation:field.getAnnotations()){//根據從欄位屬性獲取其相應的註解集合
        		//String fieldname=field.getName().toUpperCase();
        		String methodname="get"+field.getName().toUpperCase();//根據欄位屬性拼接其get方法
        		////System.out.println(fieldname);
        		//String str=annotation.toString();
        		//Pattern p=Pattern.compile("name=([\\w]*),");
        		Matcher m=Pattern.compile("name=([\\w]*),").matcher(annotation.toString());//擷取註解,獲取方法名稱
        		Method method = technicalParam.getClass().getMethod(methodname);//根據方法名稱獲取方法
    			////System.out.println(method);
    			Object o = method.invoke(technicalParamss, null);//根據方法獲取屬性值
        		while(!m.hitEnd() && m.find() && !(o==null)){
        			String column=m.group(1);
        			baowen.append("<mdm:"+column+">");
        			/*Method method = technicalParam.getClass().getMethod(methodname);
        			//System.out.println(method);
        			Object o = method.invoke(technicalParam, null);*/
        			baowen.append(o+"</mdm:"+column+">");
        			//System.out.println(column);
        		}
        	}
		  }
		  baowen.append("</mdm:TechnicalParam>");
		 }
注意:在根據欄位獲取其相應的註解後,在本文中只採取擷取字串的方式再拼接字串從而獲取相應的方法