Java使用注解和反射簡(jiǎn)化編程的方法示例
本文實(shí)例講述了Java使用注解和反射簡(jiǎn)化編程的方法。分享給大家供大家參考,具體如下:
一 點(diǎn)睛
當(dāng)調(diào)用大量方法,可以使用反射和注解簡(jiǎn)化編程。
二 代碼
import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
import java.util.ArrayList;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface testAnnoation10 {
public String name() default "methodname";
public String unit() default "unit";
}
public class ch11_10 {
public static void main( String[] args ) throws Exception {
ch11_10 ch9 = new ch11_10();
Method method[] = ch9.getClass().getMethods();
for (Method method2 : method) {
Annotation annotation = method2.getAnnotation(testAnnoation10.class);
Class<?> ts[] = method2.getParameterTypes();
if (method2.getName().indexOf("getData") == -1) continue;
ArrayList<Object> params = new ArrayList<Object>();
for (Class<?> class1 : ts) {
if (class1.getSimpleName().equals("int")) {
params.add(10);
}
if (class1.getSimpleName().equals("String")) {
params.add("100");
}
}
if (annotation != null) {
testAnnoation10 t9 = (testAnnoation10) annotation;
System.out.println(t9.name() + " is " + method2.invoke(ch9, params.toArray()) + " " + t9.unit());
}
}
}
@testAnnoation10(name = "SOC", unit = "%")
public int getData1( int a ) {
return a;
}
@testAnnoation10(name = "Electricity", unit = "Ah")
public String getData2( String b ) {
return b;
}
@testAnnoation10(name = "Tempreture", unit = "AF")
public int getData3( int a, int b ) {
return a + b;
}
}
三 運(yùn)行
Tempreture is 20 AF
Electricity is 100 Ah
SOC is 10 %
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解通過(guò)JDBC進(jìn)行簡(jiǎn)單的增刪改查(以MySQL為例)
JDBC是用于執(zhí)行SQL語(yǔ)句的一類(lèi)Java API,通過(guò)JDBC使得我們可以直接使用Java編程來(lái)對(duì)關(guān)系數(shù)據(jù)庫(kù)進(jìn)行操作。通過(guò)封裝,可以使開(kāi)發(fā)人員使用純Java API完成SQL的執(zhí)行。2017-01-01
IKAnalyzer結(jié)合Lucene實(shí)現(xiàn)中文分詞(示例講解)
下面小編就為大家?guī)?lái)一篇IKAnalyzer結(jié)合Lucene實(shí)現(xiàn)中文分詞(示例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
SpringCloud-Alibaba-Sentinel-配置持久化策略詳解
這篇文章主要介紹了SpringCloud-Alibaba-Sentinel-配置持久化策略,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
IDEA修改java文件后 不用重啟Tomcat服務(wù)便可實(shí)現(xiàn)自動(dòng)更新
這篇文章主要介紹了IDEA修改java文件后 不用重啟Tomcat服務(wù)便可實(shí)現(xiàn)自動(dòng)更新,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
利用Java代碼實(shí)現(xiàn)區(qū)塊鏈技術(shù)
這篇文章主要介紹了利用Java代碼實(shí)現(xiàn)區(qū)塊鏈技術(shù),區(qū)塊鏈的應(yīng)用范圍幾乎無(wú)窮無(wú)盡,關(guān)于區(qū)塊鏈?zhǔn)侨绾芜\(yùn)作的,下文來(lái)看看具體的內(nèi)容介紹吧,需要的朋友可以參考一下2022-04-04
使用IDEA向Gitee提交SpringBoot項(xiàng)目進(jìn)行遠(yuǎn)程管理
本文主要介紹了使用IDEA向Gitee提交SpringBoot項(xiàng)目進(jìn)行遠(yuǎn)程管理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn)功能(實(shí)例代碼)
這篇文章主要介紹了Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn),實(shí)現(xiàn)代碼很簡(jiǎn)單,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
基于SpringBoot實(shí)現(xiàn)動(dòng)態(tài)配置數(shù)據(jù)庫(kù)的加載
這篇文章主要介紹了Spring?Boot?如何動(dòng)態(tài)配置數(shù)據(jù)庫(kù)的加載,現(xiàn)項(xiàng)目有一個(gè)需求,期望通過(guò)在application.yml配置文件中設(shè)置一個(gè)開(kāi)關(guān),來(lái)決定是否加載數(shù)據(jù)庫(kù),文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-10-10

