java註解使用、java獲取註解的屬性、獲取註解的字段值

一、前言

1、前面一直講註解的基礎知識,註解的定義,對於註解的使用幾乎是一筆略過,本篇將着重講講註解的使用。 獲取註解的屬性,通過反射獲取註解的屬性值。

 

二、示例代碼

1、定義一個註解,用於給 全局變量 field 字段 賦值

 

package com.haha.study.annotation.value;
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;
/**
* description: 定義一個註解,用於給 全局變量 field 字段 賦值,並使用反射取值。 <br>
* 特別提醒: @Rentention(RetentionPolicy.RUNTIME) 時,註解纔會被jvm加載,才能使用反射獲取。
* @version v1.0
* @author w
* @date 2018年8月1日下午2:37:40
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value=ElementType.FIELD)
public @interface Fields {
int sort() default 0 ;
String value() ;
}

2、定義一個註解 。

package com.haha.study.annotation.value;
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;
/**
* description: 定義一個註解。
* @version v1.0
* @author w
* @date 2018年8月1日下午2:41:45
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ConsAnnotation {
String[] request();
}
 

3、創建一個普通的類,使用 @ConsAnnotation、@Fields 註解

package com.haha.study.annotation.value;
/**
* description: 創建一個普通的類,使用 @ConsAnnotation、@Fields 註解。
* @version v1.0
* @author w
* @date 2018年8月1日下午2:50:23
*/
@ConsAnnotation(request = { "hello","world","annotation!" })
public class User {

@Fields("中華人民共和國")
private String userName;
public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}
}

 

4、針對 com.haha.study.annotation.value.User 類使用註解的測試

package com.haha.study.annotation.value;
import java.lang.reflect.Field;
import java.util.Arrays;
/**
* description: 針對 com.haha.study.annotation.value.User 類使用註解的測試
* @version v1.0
* @author w
* @date 2018年8月1日下午2:37:13
*/

public class ValueTest {
public static void main(String[] args) throws Exception {
User user = new User();
// 1、 獲取 User類上的註解 @ConsAnnotation
ConsAnnotation anno = user.getClass().getAnnotation(ConsAnnotation.class);
String[] arr = anno.request();
System.out.println(Arrays.toString(arr)); // [hello, world, annotation!]

// 2、 獲取User類中 private String userName; 變量上的註解 @Field
Field f = user.getClass().getDeclaredField("userName");
Fields anno2 = f.getAnnotation(Fields.class);
user.setUserName(anno2.value());
System.out.println(user.getUserName()); // 中華人民共和國
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章