java注解开发_Java注解开发与应用案例

Java注解开发与应用案例

Annotation(注解)是JDK5.0及以后版本引入的,可以对包、类、属性、方法的描述,给被述对象打上标签,被打上标签后的类、属性、方法将被赋予特殊的“功能”;打个比喻,一个人如果学会飞,那这个人就是超人,所以如果给“人”这个对象打上了“会飞”的标签,那么这个人便成为“超人”。注解一般被框架解析和执行,新建立注解后,必须要有对应的框架解析和执行才有意义。下面举一个自定义注解例子:

自定义注解

它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,下面,我们用代码来演示。

7be82c381239ec6bc0af0f754e57de24.gif

package com.annotation.test;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface FruitColor {

enum Color{RED,YELLOW,WHITE}

Color fruitColor() default Color.RED;

}

6896d4a1c5f4435398de3a3f3abc9a4b.gif

b80dcd0eb119fdb514812c6771e89a0a.gif

package com.annotation.test;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface FruitName {

String value() default "";

}

6ae6ca98b4c9a3f0eaa4eae1674feca3.gif

7e31432f456fad214b6cc84da45c2f58.gif

package com.annotation.test;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface FruitProvider {

int id() default 0;

String user() default "";

String address() default "";

}

49b1646e910c517019547a9479ecb68f.gif

以上是定義的蘋果的相關信息,下面,我們開始使用上面定義的註解來進行具體的實現:

f28ea99b7d12e7fe1a9d2a72a484df6e.gif

package com.annotation.test;

import com.annotation.test.FruitColor.Color;

public class Apple {

@FruitName(value="FuShi Apple")

private String fruitName;

@FruitColor(fruitColor=Color.RED)

private String fruitColor;

@FruitProvider(id=1,user="Tom",address="China")

private FruitProvider provider;

}

632332c0a780fb9287450fa1ff4fbb64.gif

上面的Apple類是使用我們自己定義的註解來對類成員進行修飾。接下來,我們獲取我們的註釋信息:

432a22203cdb5949d927b4340069eece.gif

1 package com.annotation.test;

2

3 import java.lang.reflect.Field;

4

5 public class Test {

6

7

8 public static void getFruitInfo(String clas){

9 try {

10 Class> cls = Class.forName(clas);

11 Field[] fields = cls.getDeclaredFields();

12

13 for (Field field : fields) {

14 if(field.isAnnotationPresent(FruitName.class)==true){

15 FruitName name = field.getAnnotation(FruitName.class);

16 System.out.println("Fruit Name:"+name.value());

17 }

18 if(field.isAnnotationPresent(FruitColor.class)){

19 FruitColor color = field.getAnnotation(FruitColor.class);

20 System.out.println("Fruit Color:"+color.fruitColor());

21 }

22 if(field.isAnnotationPresent(FruitProvider.class)){

23 FruitProvider Provider = field.getAnnotation(FruitProvider.class);

24 System.out.println("Fruit FruitProvider: ProviderID:"+Provider.id()+" Provider:"+Provider.user() +" ProviderAddress:"+Provider.address());

25 }

26 }

27

28

29 } catch (ClassNotFoundException e) {

30 e.printStackTrace();

31 }

32 }

33

34 public static void main(String[] args) {

35 getFruitInfo("com.annotation.test.Apple");

36 }

37

38 }

0db878017c205df2490a9cdba00c3eff.gif

輸出結果爲:

Fruit Name:FuShi Apple

Fruit Color:RED

Fruit FruitProvider: ProviderID:1 Provider:Tom ProviderAddress:China

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值