淺談Java中注解Annotation的定義、使用、解析
此例子,用于說明如何在Java中對(duì)“注解 Annotation”的定義、使用和解析的操作。注解一般用于自定義開發(fā)框架中,至于為什么使用,此處不作過多說明,這里只說明如何使用,以作備記。下面例子已測(cè)試,可以正常運(yùn)行通過。
1、注解自定義。
這里定義兩個(gè)注解,分別用來注解類和注解屬性。
package cc.rulian.ann;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 類注釋
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyTable
{
public String name() default "";
public String version() default "1";
}
package cc.rulian.ann;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段注釋
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyField {
public String name() default ""; //名稱
public String type() default ""; //類型
}
2、注解的使用。
說明如何在類中使用自定義注解。
package cc.rulian.ann;
import java.util.Date;
/**
* 基礎(chǔ)日志
*
*/
@MyTable(name="T_BaseLog",version="2")
public class BaseLog{
@MyField(name="addTime",type="Date")
private Date log_time; // 時(shí)間
@MyField(name="log_level",type="String")
private String log_level; // 級(jí)別
@MyField(name="message",type="String")
private String message; // 日志內(nèi)容
public Date getLog_time()
{
return log_time;
}
public void setLog_time(Date log_time)
{
this.log_time = log_time;
}
public String getLog_level()
{
return log_level;
}
public void setLog_level(String log_level)
{
this.log_level = log_level;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
}
3、注解的解析。
說明如何解析注解。
package cc.rulian.ann;
import java.lang.reflect.Field;
/**
* 讀取注釋
*/
public class ReadAnn
{
public static void main(String[] args)
{
// 讀取類的注釋
BaseLog obj = new BaseLog();
// Annotation[] arr = obj.getClass().getAnnotations(); //得到所有注釋
MyTable table = obj.getClass().getAnnotation(MyTable.class); // 取得指定注釋
System.out.println("類注釋(name): " + table.name());
System.out.println("類注釋(version): " + table.version());
// 讀取屬性的注釋
Field[] fields = obj.getClass().getDeclaredFields();
for (Field f : fields)
{
// Annotation[] arr2 = f.getAnnotations(); //得到所有注釋
MyField ff = f.getAnnotation(MyField.class);// 取得指定注釋
if(ff != null)
{
System.out.println("屬性(" + f.getName() + "): " + ff.name() + " -- " + ff.type());
}
}
}
}
4、解析輸出結(jié)果。
類注釋(name): T_BaseLog
類注釋(version): 2
屬性(log_time): addTime -- Date
屬性(log_level): log_level -- String
屬性(message): message -- String
以上這篇淺談Java中注解Annotation的定義、使用、解析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot整合mybatis分頁攔截器的問題小結(jié)
springboot整合mybatis分頁攔截器,分頁攔截實(shí)際上就是獲取sql后將sql拼接limit,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07
java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)
這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
java實(shí)現(xiàn)爬蟲爬網(wǎng)站圖片的實(shí)例代碼
這篇文章主要介紹了java實(shí)現(xiàn)爬蟲爬網(wǎng)站圖片的實(shí)例代碼,需要的朋友可以參考下2018-06-06
Java中Map轉(zhuǎn)List及List轉(zhuǎn)Map的方法(簡(jiǎn)單好用!)
這篇文章主要給大家介紹了關(guān)于Java中Map轉(zhuǎn)List及List轉(zhuǎn)Map的相關(guān)資料,可以使用Java 8的Stream API將Java Map轉(zhuǎn)換為L(zhǎng)ist,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
Java 處理高并發(fā)負(fù)載類優(yōu)化方法案例詳解
這篇文章主要介紹了Java 處理高并發(fā)負(fù)載類優(yōu)化方法案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
詳解SpringBoot 創(chuàng)建定時(shí)任務(wù)(配合數(shù)據(jù)庫動(dòng)態(tài)執(zhí)行)
本篇文章主要介紹了SpringBoot 創(chuàng)建定時(shí)任務(wù)(配合數(shù)據(jù)庫動(dòng)態(tài)執(zhí)行),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
spring項(xiàng)目如何配置多數(shù)據(jù)源(已上生產(chǎn),親測(cè)有效)
這篇文章主要介紹了spring項(xiàng)目如何配置多數(shù)據(jù)源(已上生產(chǎn),親測(cè)有效),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

