时间:2021-05-19
Java注解
什么是注解?
Java中的注解就是Java源代码的元数据,也就是说注解是用来描述Java源代码的。 基本语法就是:@后面跟注解的名称。
①Override:标识某一个方法是否正确覆盖了它的父类的方法。
②Deprecated:表示已经不建议使用这个类成员了。 它是一个标记注解。
③SuppressWarnings:用来抑制警告信息 等等。
要更好的理解注解,我们可以自己写一个注解
@Target : 用来限制注解可以用到那几个地方。比方可以用到类上,可以用到方法胜都可以用@Target来限制
@Retention:这个是用来控制注解编译在Class中的状态的,默认是编译到Class里去,但是不读出来,还有两种状态是 不编译到Class里面去, 最后一种是编译过于,并且可以通过类反射读出来的
@Documented : 可以利用网络来生成注解的
@Inherited : 子类是否能继承注解
那么下面是我们自己写的注解类
package cn.hncu.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target; @Inherited @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE,ElementType.METHOD}) //目标: 限制该注解能够用在哪些地方,如果没定义@Target则不限制即无论哪里都可以用 public @interface MyAnno { public String schoolName() default "hncu"; //注解中的成员变量要这么定义 }测试,学习使用
package cn.hncu.annotation;import java.util.ArrayList;import java.util.Collection;@MyAnnopublic class AnnotationHello { private String name="hncu"; public static void main(String[] args) { System.out.println("hello"); } @Override public String toString() { return super.toString(); } @MyAnno(schoolName="大城院") @Deprecated public void abc(){ System.out.println("abc..."); } @SuppressWarnings({ "rawtypes", "unchecked" }) public void colDemo(){ Collection col = new ArrayList(); col.add("aa"); } //注解,只是给其它程序或代码读取信息的 @MyAnno(schoolName="湖南城市学院") public void demo(){ System.out.println("1111111"); } @MyAnno //因为该注解中的成员变量schoolName设置了默认值,因此这里可以不赋值。若没设置默认值,则必须要在这里赋值 public void demo2(){ System.out.println("1111111"); } //@MyAnno("abc") //如果注解中的变量名是value,则这里可以不给出变量名 public void demo3(){ System.out.println("33333333333"); }}通过类反射读出来
package cn.hncu.annotation;import java.lang.reflect.Method;public class UseMyAnno { public static void main(String[] args) { try { Class c = Class.forName("cn.hncu.annotation.AnnotationHello"); //判断类上面是否有该注解(@MyAnno) boolean boo = c.isAnnotationPresent(MyAnno.class); System.out.println("类上是否有该注解:"+boo); Method ms[] = c.getDeclaredMethods(); for(Method m: ms){ //判断方法上面是否有该注解(@MyAnno) if(m.isAnnotationPresent(MyAnno.class)){ System.out.println("有注解的方法:"+m.getName()); //演示读取注解中成员变量的值----从m对象中获取该注解,进而读取它的成员变量的值 MyAnno ma = (MyAnno)m.getAnnotation(MyAnno.class); System.out.println("学校名称:=="+ma.schoolName()); //获取到了这些数据过后,下面就可以开始你的处理了 } } } catch (ClassNotFoundException e) { e.printStackTrace(); } }}如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
扩展阅读c#基础系列1---深入理解值类型和引用类型c#基础系列2---深入理解String引言在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说
Java内省(Introspector)深入理解一些概念: 内省(Introspector)是Java语言对JavaBean类属性、事件的一种缺省处理方法。
Java反射机制深入理解一.概念 反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。反射是java语言
首先看我们的源代码。复制代码代码如下:深入理解Javascriptconsole.log(this);深入理解Javascript我们知道,通过浏览器打开这个页
本文实例讲述了jsprototype深入理解及应用。分享给大家供大家参考,具体如下:上一篇讲了js的prototype概念,在这里回顾一下prototype的定