注解Annotation简介,及注解简单应用,数组类型的属性,未完待续---枚举类型的属性,注解类型的属性



package com.base_super.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Arrays;

/**
 * 注解:JDK1.5的新特性
 * 
 * 总结:
 * 	1:注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具
 * 		和其他程序可以用反射来了解你的类以及各种元素上有无何种标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
 *  2,看java.lang包,可看到JDK中提供的最基本的annotation
 * 
 * @author wjw
 *
 */
//对“应用注解的类”进行反射操作的类
public class AnnotationTest1 {
	public static void main(String[] args) {
//		method();
//		Annotataion_Class.sayHello();//这就是调用过时方法的效果
		method1();
	}
	//以下这两种注解方式都可以
//	@SuppressWarnings(value = { "deprecation" })
	@SuppressWarnings("deprecation")//声明该方法是被废弃的方法,让其不用再显示中划线了,但Myeclipse这个功能实现的不好,还在显示
	public static void method(){
		System.runFinalizersOnExit(true);
	}
	
	public static void method1(){
		//判断应用注解的类是否是应用的ZiDingYi_Annotation_class这个注解
		boolean boo=Annotataion_Class.class.isAnnotationPresent(ZiDingYi_Annotation_class.class);
		if(boo){
			ZiDingYi_Annotation_class zdy=Annotataion_Class.class.getAnnotation(ZiDingYi_Annotation_class.class);
			System.out.println(zdy);
			System.out.println("dddddddddd");
			System.out.println(zdy.color());//调用那个属性方法
			System.out.println(zdy.value());//调用那个属性方法,可以和其他属性一样正常调用
		
//			System.out.println(Arrays.asList(zdy.Arrayarr()));//整形数组不能通过Arrays.asList()方法进行打印,因为int[],不是Object[]
			System.out.println(zdy.Arrayarr().length);//这里就打印数组的长度了
		}
	
	}
	
}
/**
 * 应用注解 的类
 * @author zjw
 *
 */
//@ZiDingYi_Annotation_class//把自定义的注解应用在类上


//@ZiDingYi_Annotation_class(color = "yellow",value="aaaaaaaaaa")//因为注解中添加了属性方法,所以这里也要对属性进行初始化

//@ZiDingYi_Annotation_class(value="aaaaaaaaaa")//因为注解中添加了属性方法,所以这里也要对属性进行初始化
//@ZiDingYi_Annotation_class(value="bbb",Arrayarr={1,2,3,4,5,6})//可以为已经赋值过的属性从新赋值
@ZiDingYi_Annotation_class(value="cc",Arrayarr=888)//如果数组只有一个值的话,可以直接这样写,不用再写大括号了
class Annotataion_Class{
	@Deprecated//该注解表示该方法过时,建议不使用该方法,但该方法还是可以调用
	public static void sayHello(){
		System.out.println("hi,Jack!!!!");
	} 
	@Override
	public String toString(){
		return "@Override这个注解的作用是确保你写的方法是否覆盖了父类的方法";
	}
}
/**
 * 自定义注解类
 * @author zjw
 *
 */

//元信息:信息的信息等等

//这是元注解,就是注解的注解

/**
 * @Retention元注解,三种取值:
 * 		RetetionPolicy.SOURCE---对应-----java源文件				@Override,@SuppressWarnings都应用在这个阶段
 * 		RetetionPolicy.CLASS----对应-----class文件,这是默认的阶段
 * 		RetetionPolicy.RUNTIME--对应-----内存中的字节码			@Deprecated应用在这个阶段								
 * 
 */
@Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})//这样加这个注解,表示让自定义的注解只能应用到相应的位置上去,本次设置,是应用到方法上,和类上,注意ElementType.METHOD表示应用到方法上,ElementType.TYPE表示应用到类
//至于为什么要用type代替class,因为class实现了type接口,且多个类型(如:enum,@interface)等都实现了type接口
@interface ZiDingYi_Annotation_class{
//	String color();//在注解中添加属性方法
	String color() default "blue";//在注解中添加属性方法,并设定默认值,此时的话,就可以认为只有下面的value一个属性赋值,就可以简写了 如:@ZiDingYi_Annotation_class(value="aaaaaaaaaa")
	
	String value();//注意这个属性很特殊,如果只有这个属性需要赋值的话,在添加注解时,可以简写 如:@ZiDingYi_Annotation_class(value="aaaaaaaaaa")

	int[] Arrayarr() default {2,3,4};//定义整形数组属性方法
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值