【java开发系列】—— 自定义注解
之前在开发中,就总纳闷,为什么继承接口时,会出现@Override注解,有时候还会提示写注解@SuppressWarnings?
原来这是java特有的特性,注解!
那么什么是注解呢?
注解就是某种注解类型的一个实例,我们可以用它在某个类上进行标注,这样编译器在编译我们的文件时,会根据我们自己设定的方法来编译类。
注解都是什么呢?看下面这张图就明白了!
上面的图可以看出,注解大体上分为三种:标记注解,一般注解,元注解
@Override用于标识,该方法是继承自超类的。这样,当超类的方法修改后,实现类就可以直接看到了。
而@Deprecated注解,则是标识当前方法或者类已经不推荐使用,如果用户还是要使用,会生成编译的警告。
上面的测试,也仅仅是针对IDE,如果是利用javac,应该会有提示的。
其他的不多说了,标准元注解 都是干嘛的呢?
@Documented 标记生成javadoc
@Inherited 标记继承关系
@Retention 注解的生存期
@Target 标注的目标
下面我们自己做一个注解!
首先声明一个接口,并未它添加注解内容!

1 package testAnnotation;
2
3 import java.lang.annotation.Documented;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6
7 @Documented
8 @Retention(RetentionPolicy.RUNTIME)
9 public @interface Person{
10 String name();
11 int age();
12 }

一般来说,注解都是搭配反射的解析器共同工作的。然后利用反射机制查看类的注解内容

1 package testAnnotation;
2
3 @Person(name="xingoo",age=25)
4 public class test3 {
5 public static void print(Class c){
6 System.out.println(c.getName());
7
8 //java.lang.Class的getAnnotation方法,如果有注解,则返回注解。否则返回null
9 Person person = (Person)c.getAnnotation(Person.class);
10
11 if(person != null){
12 System.out.println("name:"+person.name()+" age:"+person.age());
13 }else{
14 System.out.println("person unknown!");
15 }
16 }
17 public static void main(String[] args){
18 test3.print(test3.class);
19 }
20 }

运行结果,读取到了注解的内容
testAnnotation.test3
name:xingoo age:25
【java开发系列】—— 自定义注解的更多相关文章
- Java开发系列-注解
概述 在JDK5之后提供了一个新特性,和类.接口同级.定义时使用的关键字是@interface.注解主要有三个作用,分别是编译检查.替代配置文件.定义注解(元注解).分析代码(用到反射).注解的本质就 ...
- Java反射与自定义注解
反射,在Java常用框架中屡见不鲜.它存在于java.lang.reflact包中,就我的认识,它可以拿到类的字段和方法,及构造方法,还可以生成对象实例等.对深入的机制我暂时还不了解,本篇文章着重在使 ...
- Java:深入自定义注解(Annotation)
在网上找了很多资料也有写的比较好的,但是总有有一点半点的细节没有写出来,在这里自己总结下使用. 使用Java的自定义注解,首先个人需要了解下Java为我们提供的元注解和相关定义注解的语法.(这个我在网 ...
- Java开发系列-文件上传
概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...
- 【java开发系列】—— JDK安装
前言 作为一个java开发者,安装JDK是不可避免的,但是配置路径却总是记不住,百度也有很多参考例子.这里仅仅当做以后参考的笔记记录. 说到JDK,就不得不提JRE.他们到底是什么呢? 通常我们进行j ...
- Java中的自定义注解
## 元注解 要声明一个注解, 我们需要元注解, 元注解是指注解的注解,包括@Retention, @Target, @Document, @Inherited. @Retention 注解的保留位置 ...
- java基础复习-自定义注解4(结合JDBC技术,打造类表映射微框架)
写在前面: 1.该框架为自己所写的第一个框架类产品,可能有着许多不足的地方,读者可以到评论区指出.同时,该微框架的源码也会开源至博客中,够后来的学习者借鉴.由于该框架逻辑结构稍些复杂,不可能花大量篇幅 ...
- 【java开发系列】—— struts2简单入门示例
前言 最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的. struts2其实就是为我们封装了servlet,简化了js ...
- 【java开发系列】—— 集合使用方法
一.首先看一下集合的框架图: 由于collection也继承了Iterator和comparable接口,因此我们可以使用Iterator来遍历元素,也可以通过自定义compareTo函数来重新编写自 ...
随机推荐
- ASP.NET CORE中控制器内return HTML 内容自动编码问题
以前ASP.NET MVC中在控制器中直接 return Content( "<h1>测试测试</h1>"); 在前台VIEW上就显示加粗的文字了,但是在A ...
- Daemontools和Supervisor管理linux常驻进程
linux主要使用supervise来管理常驻进程.基于supervise的两个比较重要的工具是Daemontools和Supervisor. 实际上,supervise也算Daemontools的一 ...
- 运行Virtualbox去安装系统时出错:Failed to open a session for the virtual machine,Unable to load R3 module xxxx/VBoxDD.DLL(VBoxDD)
貌似看到不少人(1,2,3),在使用Virtualbox去安装系统时,都遇到这个错误: 比如这里遇到的: 截图: 和另外这里的截图: 加文字描述: Failed to open a session f ...
- iOS开发-图片浏览器(优化)
// // ViewController.m // 19-图片浏览器 // // Created by hongqiangli on 2017/7/31. // Copyright © 201 ...
- vm12序列号
VMware tools怎么删除rpm -e open-vm-tools-desktop vm12序列号5A02H-AU243-TZJ49-GTC7K-3C61NVF5XA-FNDDJ-085GZ-4 ...
- python下使用epoll
Reference: http://blog.csdn.net/hehe123456ZXC/article/details/52526670 因为最近想学习如何用epoll写服务器, 于是找到了一篇介 ...
- Vmware 注册服务 开机自启
现在的服务器性能往往过剩,利用虚拟机可以提高服务器的利用效率.VMware是一款很好的虚拟机软件,但是其WorkSation版本并不支持开机自动启动,支持开机自启的Server又长年没有更新,已经无法 ...
- ARKit从入门到精通(3)-ARKit自定义实现
转载:http://blog.csdn.net/u013263917/article/details/73038566 在上一小节中ARKit从入门到精通(2)-ARKit工作原理及流程介绍,我们完整 ...
- Beef安装与简单使用
安装 Debian / Ubuntu 安装依赖 sudo apt-get update sudo apt-get install curl git curl -sSL https://raw.gith ...
- RecyclerView 输出的和排版的不一样
遇到过这样一种情况,就是RecyclerView加载出来的和看到Android Studio里的不一样 原因是: @Override public ViewHolder onCreateViewHol ...