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()); // 中華人民共和國
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM