Java 注解编程

 注解

                 注解相当于是一种标记,加了注解就等于打上了某种标记。注解可以加在包、类、字段、方法、方法的参数、局部变量上。开发工具和其它程序可以用反射来了解你的类及各种元素上有无何种标记,有什么标记就去干相应的事。

 

         (1)Java 中的注解

 

           @SuppressWarning 忽略警告     

public class AnotationTest {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		System.runFinalizersOnExit(true);
	}
}

 

                  @Deprecated 表示某个元素已经过时

public class AnotationTest {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		System.runFinalizersOnExit(true);
		sayHello();
	}
	
	@Deprecated
	public static void sayHello(){
		System.out.println("DriverKing_斌");
	}
}



                     @override 重写父类中的一个方法

public class AnotationTest {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		System.runFinalizersOnExit(true);
		sayHello();
	}
	
	@Deprecated
	public static void sayHello(){
		System.out.println("DriverKing_斌");
	}

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return super.equals(obj);
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return super.hashCode();
	}
}


 

           (2)注解的自定义与反射调用

 

            注解的应用结构图:

 

           

 

           编写自定义注解:

@Retention(RetentionPolicy.RUNTIME) //元注解,这个参数表示该注解的生命周期保持到运行时
public @interface MyAnotation {

}


 

                应用注解:

@MyAnotation	//添加了自定义注解
public class AnotationTest {

	public static void main(String[] args) {
		
		if(AnotationTest.class.isAnnotationPresent(MyAnotation.class)){	//判断是否为注解类型
			MyAnotation anotation = AnotationTest.class.getAnnotation(MyAnotation.class);
			System.out.println(anotation);
		}
	}
}


 

                注解的生命周期:注解的生命周期有三个种: java源文件 -----> class文件 ----->内存中字节码 

 

               元注解:

         @Retention ,表示该注解的生命周期。默认值为在 class 文件阶段。

         @Target,表示该注解能被应用的范围。

@Retention(RetentionPolicy.RUNTIME) //元注解,这个属性表示该注解的生命周期保持到运行时
@Target({ElementType.METHOD,ElementType.TYPE})	//元注解,这个属性表示该注解应用在方法或各种类型身上,如果有多个属性,则用数组表示
public @interface MyAnotation {

}


 

              为注解添加属性:

 

        

@MyAnotation(Color="red",value="abc",array={1,2,3},annotation=@MetaAnnotation("调用注解的注解"))	//如果有属性且没有默认值,则必须指定属性值
public class AnotationTest {

	public static void main(String[] args) {
		
		if(AnotationTest.class.isAnnotationPresent(MyAnotation.class)){
			MyAnotation anotation = AnotationTest.class.getAnnotation(MyAnotation.class);
			System.out.println(anotation.Color());
		}
	}
}


@Retention(RetentionPolicy.RUNTIME) //元注解,这个参数表示该注解的生命周期保持到运行时
@Target({ElementType.METHOD,ElementType.TYPE})	//元注解,这个参数表示该注解应用在方法或各种类型身上,如果有多个参数,则用数组表示
public @interface MyAnotation {

	String Color();	//定义了一个属性,表示这个注解有一个颜色属性
	String value();	//特殊的属性,如果只有一个 vlaue 属性,则在调用注解的时候可以直接写属性值,例如 @Retention("abc")
	String name() default "DriverKing_斌";	//指定默认值
	int[] array() default {2,1};
	MetaAnnotation annotation() default @MetaAnnotation("注解的注解");
}


public @interface MetaAnnotation {

	String value();
}



       

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值