中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java的注解(用在java類的方法上的注解)方法

發布時間:2020-09-24 07:30:25 來源:腳本之家 閱讀:277 作者:zhangbeizhen18 欄目:編程語言

場景:根據方法上的注解,通過java反射方式找到需要執行的的方法。

1.注解類

/**注解作用在方法上*/
@Target({ElementType.METHOD}) 
/**注解的生命周期一直程序運行時都存在VM運行期間保留注解,可以通過反射機制讀取注解信息*/
@Retention(RetentionPolicy.RUNTIME)
/**注解包含在Javadoc中*/
@Documented 
public @interface Item {
	String value();
}

2.在類的方法上使用注解

public class WorkService {
 
	private static Logger logger = LoggerFactory.getLogger(WorkService.class);
 
	@Item("1001")
	public int getItem1001Info(GirlVo girl) {
 
		logger.info("getItem1001Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
	@Item("1002")
	public int getItem1002Info(GirlVo girl) {
 
		logger.info("getItem1002Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
	@Item("1003")
	public int getItem1003Info(GirlVo girl) {
		logger.info("getItem1003Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
	@Item("1004")
	public int getItem1004Info(GirlVo girl) {
		logger.info("getItem1004Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
	@Item("1005")
	public int getItem1005Info(GirlVo girl) {
		logger.info("getItem1005Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
	@Item("1006")
	public int getItem1006Info(GirlVo girl) {
		logger.info("getItem1006Info輸出:");
		logger.info(girl.toString());
		return 1;
	}
}

3.實體類,作為參數傳遞

public class GirlVo implements Serializable {
 
	private static final long serialVersionUID = -8545755852948661858L;
	/**ID號*/
	private String girlId;
	/**姓名*/
	private String girlName;
	/**年齡*/
	private Long age;
	/**身高*/
	private Double height;
	/**罩杯*/
	private String cupSize;
	public String getGirlId() {
		return girlId;
	}
	public void setGirlId(String girlId) {
		this.girlId = girlId;
	}
	public String getGirlName() {
		return girlName;
	}
	public void setGirlName(String girlName) {
		this.girlName = girlName;
	}
	public long getAge() {
		return age;
	}
	public void setAge(long age) {
		this.age = age;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public String getCupSize() {
		return cupSize;
	}
	public void setCupSize(String cupSize) {
		this.cupSize = cupSize;
	}
 
	@Override
	public String toString() {
		
		return "GirlVo [girlId=" + girlId
				+",girlName=" + girlName
				+",age=" + age
				+",height=" + height
				+",cupSize=" + cupSize
				+"]";
	}
}

4.反射調用方法注解的類

		 List<Method> methods = MethodUtils.getMethodsListWithAnnotation(clazz,Item.class);
		 for (Method method : methods) {
			 for (Annotation annotation : method.getDeclaredAnnotations()) {
				 if (annotation instanceof Item){
					 String code = ((Item) annotation).value();
					 if (Objects.equals(item, code)){
						 try {	
							logger.info("注解號:" + code +" 執行開始...");
							method.invoke(clazz.newInstance(), girlVo);
							logger.info("注解號:" + code +" 執行結束...");
						} catch (Exception e) {
							e.printStackTrace();
							logger.info("拋異常...");
						}
					 }
				 }
			 }
		 }
 
	}
 
}

5.main方法測試類

public class TestAnnotation {
	
	private static Logger logger = LoggerFactory.getLogger(TestAnnotation.class);
	 
	public static void main(String []args) throws ClassNotFoundException{
		logger.info("測試開始......");
		HashMap<String,Object> map = (HashMap<String,Object>) getData();
		/**遍歷hashMap*/
		for(Entry<String,Object> entry : map.entrySet()){
			String item = entry.getKey();
			GirlVo girlVo = (GirlVo) entry.getValue();
			ReflectCallMethodAnnotation.annotationMethod(item,girlVo);
		}
		
		logger.info("測試結束......");
	}
 
 
	public static Map getData() {
 
		HashMap<String ,Object> data = new HashMap();
		 
		GirlVo girlVo1 = new GirlVo();
		girlVo1.setGirlId("1001");
		girlVo1.setGirlName("張一");
		girlVo1.setAge(27);
		girlVo1.setHeight(169);
		girlVo1.setCupSize("F");
		
		GirlVo girlVo2 = new GirlVo();
		girlVo2.setGirlId("1002");
		girlVo2.setGirlName("王二");
		girlVo2.setAge(29);
		girlVo2.setHeight(175);
		girlVo2.setCupSize("B");
		
		GirlVo girlVo3 = new GirlVo();
		girlVo3.setGirlId("1003");
		girlVo3.setGirlName("劉五");
		girlVo3.setAge(24);
		girlVo3.setHeight(160);
		girlVo3.setCupSize("B");
		
		GirlVo girlVo4 = new GirlVo();
		girlVo4.setGirlId("1004");
		girlVo4.setGirlName("陳六");
		girlVo4.setAge(21);
		girlVo4.setHeight(168);
		girlVo4.setCupSize("C");
		
		GirlVo girlVo5 = new GirlVo();
		girlVo5.setGirlId("1005");
		girlVo5.setGirlName("趙七");
		girlVo5.setAge(25);
		girlVo5.setHeight(169);
		girlVo5.setCupSize("C");
		
		GirlVo girlVo6 = new GirlVo();
		girlVo6.setGirlId("1006");
		girlVo6.setGirlName("張八");
		girlVo6.setAge(26);
		girlVo6.setHeight(165);
		girlVo6.setCupSize("A");
		
		data.put("1001", girlVo1);
		data.put("1002", girlVo2);
		data.put("1003", girlVo3);
		data.put("1004", girlVo4);
		data.put("1005", girlVo5);
		data.put("1006", girlVo6);
		
		return data;
	}
 
}

以上所述是小編給大家介紹的使用java的注解(用在java類的方法上的注解)方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡水市| 库伦旗| 淮滨县| 石河子市| 巨鹿县| 久治县| 沅陵县| 涿鹿县| 江陵县| 阿巴嘎旗| 察隅县| 偃师市| 高陵县| 明溪县| 什邡市| 甘南县| 都江堰市| 杭锦后旗| 湘乡市| 蒙山县| 淅川县| 水富县| 江达县| 宜州市| 汝阳县| 扶余县| 德保县| 区。| 独山县| 始兴县| 天台县| 沙雅县| 黎平县| 乾安县| 措美县| 海门市| 五家渠市| 桂东县| 西宁市| 马山县| 高雄市|