java --自定义注解的使用

Annotaton(注解)是jdk5.0后引入的,先今很多主流框架都支持注解。

注解一般用于创建文档,跟踪代码中的依赖以及编译检查。以@注解名存在


jdk中常用的注解有

@Override         覆盖超类中方法

@Deprecated       被废弃的代码

@suppressWarings  警告

 

还有一些用于专门创建自定义的注解


自定义注解

@Target       应用注解位置:字段,方法,类..

@retemtop      使用级别,runtime classsource

@Documente    是否被包含在javadoc

@Inherited      允许子类继承父类中的注解

 

定义一个注解目的还是在于使用,使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器。从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。

根据我们上节了解到的反射机制


 我们做一个注解的定义和使用


1定义注解类

importjava.lang.annotation.ElementType;
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
importjava.lang.annotation.Target;
 
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interfaceUseCase {
 
    public String name();
    public String desciption() default "no description";
}

2定义用户类

package com.bjpower.node.spring;
public class User {

	private String userName;
	private String password;

	@UseCase(name = "password", desciption = "密码")
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@UseCase(name="userName",desciption="用户名")
	public String getUserName() {
		return userName;
	}

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

	public User() {

	}

	public User(String username) {
		this.userName = username;
	}

}

3获取注解类方法

 public static void getrefect(String clas){
		
		 try {
			Class<?> cls = Class.forName(clas);//反射获取类的Class对象
			Method [] methods = cls.getDeclaredMethods();//获取类的所有方法
			
			for (Method method : methods) {
				//判断方法上是否有指定的注解,有则获取注解进行打印
				if(method.isAnnotationPresent(UseCase.class) == true){
					UseCase usercase = method.getAnnotation(UseCase.class);//获取注解类
					System.out.println("用户信息:"+ usercase.name()+" 用户描述:"+usercase.desciption() );
					
				}
			}
 		} catch (Exception e) {
			e.printStackTrace();
		}
	}

4客户端测试

public class Client {

	public static void main(String[] args) {

		getrefect("com.bjpower.node.spring.User");
	}
}

测试结果:


用户信息:password用户描述:密码

用户信息:userName用户描述:用户名

 

小结:


注解的解析是利用反射,动态的解析的,相比注释,他有自己独特的优点,我们可以对某些字段或方法进行特别说明来对页面信息进行展示。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
Java自定义注解使用场景有很多,以下是其中几个常见的场景: 1. 代码级别的标记:自定义注解可以用来将特定的标记注解到代码中,以便在后续的处理中能够根据这些标记进行相应的逻辑处理。比如,可以自定义一个注解来标记某个方法需要进行性能监控,然后在运行时通过反射获取到被标记的方法,从而进行性能监控的统计。 2. 配置文件读取:自定义注解可以用来读取配置文件中的参数值,从而简化配置文件的读取和解析过程。比如,可以自定义一个注解来读取配置文件中的数据库连接信息,然后通过反射获取到被标记的字段,并将配置文件中的参数值设置到对应的字段上。 3. 代替XML配置文件:自定义注解可以用来代替繁琐的XML配置文件,从而简化配置的过程。比如,可以自定义一个注解来标记某个类需要在启动时进行初始化,然后在启动时扫描所有被标记的类,并进行相应的初始化操作。 4. AOP编程:自定义注解可以用来实现面向切面编程(AOP),将横切逻辑从业务逻辑中解耦出来。比如,可以自定义一个注解来标记某个方法需要进行事务处理,然后在运行时根据该注解进行事务的开启、提交或回滚。 总的来说,自定义注解使用场景较为广泛,可以根据具体的需求来合理地运用。它能够提高代码的可读性和维护性,同时也能够简化一些繁琐的操作,提高开发效率。但需要注意的是,自定义注解只是一种元数据的定义,需要通过反射等手段来读取和处理。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值