java 注解

java 1.5开始有了注解,本质上就是一个标示,用于代码间解耦合 jdk中原生(java原生注解)注解

@Overrride(重写父类中的方法)

@SuppressWarnings(消除警告)

@Deprecate(声明方法已经过时)

元注解,用来修饰描述其他注解(注解的注解)

元注解有4个

@Target //标示注解的作用域(type(类),filed(字段),method(方法)....)

@Retention //标示注解的生命周期 (source(存在于java文件),class(存在于java文件和class文件),runtime(代码运行时也存在,可以影响代码逻辑))

@Documented //标示注解是否可以生成java文档

@Inherited //标示注解是否可以被子类继承

自定义注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Msg {

	String default_str = "mgs";
	
	String msg() default default_str;
	
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface TableFiled {

	String tablefiled ="這個是表裡面沒有的字段";
	
	String getTbaleFiled() default tablefiled;
	
}



@Msg(msg="this is test")
public class AnnotationTest {

	@TableFiled(getTbaleFiled="ceshi---name")
	private String name;
	
	@TableFiled(getTbaleFiled="ceshi---age")
	private String age;
	
	
	private String address;
	
	public String getName() {
		return name;
	}


	public String getAge() {
		return age;
	}


	public String getAddress() {
		return address;
	}


	public void setName(String name) {
		this.name = name;
	}


	public void setAge(String age) {
		this.age = age;
	}


	public void setAddress(String address) {
		this.address = address;
	}
	


        //mian方法简单的解析,真实项目中,会有与注解对应的注解解析器
	public static void main(String[] mgs){
		AnnotationTest test = new AnnotationTest();
		Msg msgs = (Msg)test.getClass().getAnnotation(Msg.class);
		
		System.out.println(msgs.msg());
			
		Field[]  fields =test.getClass().getDeclaredFields();
		
		Arrays.asList(fields).forEach( f ->{
			TableFiled tableFiled = f.getAnnotation(TableFiled.class);
			if(!StringUtils.isEmpty(tableFiled)){
				System.out.println(tableFiled.getTbaleFiled());
			}
			
		});
	}
	
}

控制台输出
this is test
ceshi---name
ceshi---age


所有的注解都会默认是 public interface Annotation 接口的子类,就想所有java类都会是Object的子类一样

转载于:https://my.oschina.net/u/3195939/blog/861022

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值