JAVA反射獲取屬性註解,類方法
阿新 • • 發佈:2019-02-13
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>"); }
注意:在根據欄位獲取其相應的註解後,在本文中只採取擷取字串的方式再拼接字串從而獲取相應的方法