java 注解

注解也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们在稍后某个时刻非常方便地使用这些数据 。


最常见的就是@override注解,表示覆盖超类中的方法。

@SuppressWarning关闭不当的编译器警告信息。


一个注解例子:

@Target(ElementType.METHOD)
// 该注解用于什么 地方
@Retention(RetentionPolicy.RUNTIME)
// 需要在什么级别保存注解信息
public @interface Test {
	public int id();// 自定义的一个"方法"

	public String description() default "no descritation";// 注解描述,有一个默认值
}
如何使用?

package test;

public class Demo {

	public static void main(String[] Args) {
		new Demo().test();
	}

	@Test(id = 0, description = "测试~~")
	public void test() {

	}
}
三种标准注解

@Target

 

可用的有构造器的声明(CONSTRUTOR)、局部变量声明(LOCAL_VARIALBE)、方法声明(METHOD)、包声明(PACKAGE)、参数声明(PARAMETER)、类接口或enum声明(TYPE)

@Retention

级别有三:

注解会被编译器丢弃(SOURCE)

注解在class文件中可用,但会被vm丢弃(CLASS)

vm将在运行期也保留注解,因此可以通过反射机制读取注解信息(RUNTIME)

@Decumented

将此注解包含在Javadoc中

@Inherited

允许被子类继承


注解的应用

package test;

import java.lang.reflect.Method;

public class Demo {
	@Test(id =2, description = "测试~~")
	public static void main(String[] Args) {
		new Demo().test0();
	}

	@Test(id = 0, description = "测试~~")
	public void test() {
	}
	@Test(id = 3, description = "测试~~")
	public void test0() {
		Method[] m = getClass().getDeclaredMethods();
		// Test t=m[0].getAnnotation(Demo.class);
		for (Method method : getClass().getDeclaredMethods()) {
			Test t = method.getAnnotation(Test.class);
			System.out.println(t.description() + "********" + t.id());
		}
	}
}

注解中不允许NULL作为它的默认值,如Description和id,如果想表现一个元素的存在或者缺失则最好用负数或者""。


通过这些了解我们如果对java中的反射机制有一定了解那么可以很轻松的运用到我们的项目中,比如通过编写一个sql的注解,在编写一个javabean的时候可以通过注解来写一个程序用于生成sql语句,或者写一个test注解用于执行单元测试。有一个基于注解的测试框架叫net.mindview.atunit.网上有jar包,不过调 了半天也没调 出来 。没法用。

也许在新版本中被替代了?Junit还是很好用的。

添加Test注解的时候,run as unit test就可以了,只执行test注解的方法 。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值