廖雪峰Java4反射与泛型-2注解-1使用注解
1.Annotation定义
注解是放在Java源码的类、方法、字段、参数前的一种标签。如下
package com.reflection;
import org.apache.logging.log4j.core.tools.picocli.CommandLine;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Resource("Main")//带参数的注解
public class Main{
@Inject
int n;
@PostConstruct
public void hello(@Param String name){
System.out.println(name);
}
@Override
public String toString(){
return "hello";
}
}
2.注解的作用:
- 注解本身对代码逻辑没有任何影响
- 如何使用注解由工具(如编译器)决定。写了注解,编译器会帮我们检查问题。否则不会检查。
3.使用注意事项
3.1编译器可以使用的注解:
- @Override: 让编译器检查该方法是否正确的实现了覆写
- @Deprecated: 告诉编译器该方法已经被标记作废,在其他地方引用将会出现变异警告。
- @SuppressWarnings: 如果方法内部出现了编译警告,就忽略这些警告。
3.2注解可以定义配置参数:
- 配置参数有注解类型定义
- 配置参数可以包括:
* 所有基本类型
* String
* 枚举类型
* 数组(基本类型、String、枚举类型的数组)
public class Main{
int n = 100;
@Test(timeout=100)
public void test(){
System.out.println("test");
}
}
- 配置参数必须是常量
* 缺少某个配置参数将使用默认值
* 如果只写常量,相当于省略了value参数
* 如果只写注释,相当于全部使用默认值
package com.reflection;
public class Main{
@Check(min=0,max=100,value=55)
public int n;
@Check(value=99)//缺少某个配置参数将使用默认值
public int p;
@Check(99)//如果参数名称是value,可以省略参数名称
public int x;
@Check//如果只写注释,相当于全部使用默认值
public int y;
}

4.总结
- 注解是Java语言用于工具处理的标注
- 注解可以配置参数,没有指定配置的参数使用默认值
- 如果参数名称是value,可以省略参数名称
廖雪峰Java4反射与泛型-2注解-1使用注解的更多相关文章
- 廖雪峰Java4反射与泛型-2注解-3处理注解
1.处理注解 注解本身对对代码逻辑没有任何影响 SOURCE类型的注解在编译期就被丢掉了 CLASS类型的注解仅保存在class文件中 RUNTIME类型的注解在运行期可以被读取 如何使用注解由工具决 ...
- 廖雪峰Java4反射与泛型-2注解-2定义注解
1.定义注解 使用@interface定义注解Annotation 注解的参数类似无参数方法 可以设定一个默认值(推荐) 把最常用的参数命名为value(推荐) 2.元注解 2.1Target使用方式 ...
- 廖雪峰Java4反射与泛型-3泛型-7泛型和反射
1.部分反射API是泛型 1.1获取反射API的泛型 部分反射API是泛型,如Class<T>是泛型 //如果使用Class,不带泛型,出现compile warning编译警告 Clas ...
- 廖雪峰Java4反射与泛型-3范型-4擦拭法
1.擦拭法是Java泛型的实现方式. 编译器把类型视为Object. * 泛型代码编译的时候,编译器实际上把所有的泛型类型T统一视为Object类型.换句话说,虚拟机对泛型一无所知,所有的工作都是编译 ...
- 廖雪峰Java4反射与泛型-3范型-6super通配符
1.super通配符 1.1super通配符第一种用法 泛型的继承关系 Pair<Integer>不是Pair<Number>的子类,如 static void set(Pai ...
- 廖雪峰Java4反射与泛型-3范型-5extends通配符
1.泛型的继承关系: Pair<Integer>不是Pair<Number>的子类 add()不接受Pair<Integer> Pair.java package ...
- 廖雪峰Java4反射与泛型-3范型-3编写泛型
编写泛型类比普通的类要麻烦,而且很少编写泛型类. 1.编写一个泛型类: 按照某种类型(例如String)编写类 标记所有的特定类型例如String 把特定类型替换为T,并申明 Pair.java pa ...
- 廖雪峰Java4反射与泛型-1反射-2访问字段Field和3调用方法Method
2.字段Field 2.1.通过Class实例获取字段field信息: getField(name): 获取某个public的field,包括父类 getDeclaredField(name): 获取 ...
- 廖雪峰Java4反射与泛型-1反射-1Class类
1.Class类与反射定义 Class类本身是一种数据类型(Type),class/interface的数据类型是Class,JVM为每个加载的class创建了唯一的Class实例. Class实例包 ...
随机推荐
- CentOS7源码安装qbittorrent最新版本
CentOS的软件 yum 里 yum search qbittorrent yum info qbittorrent 找到的是3.37版本 官网最新的是4.12版本.但需要源码安装: 官网下载最新版 ...
- java 8大数据类型
第一类:逻辑型boolean 第二类:文本型char 1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a'; //任意单个字符,加单引号. char a=' ...
- 通信协议演进与JCE协议详解
一.通信协议概述通信协议是两个节点之间为了协同工作.实现信息交换,而协商的规则和约定,例如规定字节序,各个字段类型,使用什么压缩算法或加密算法等. 1.原始数据假设A和B通信,获取或设置用户基本资料, ...
- golang-test-tool-gotests
gotests介绍 gotests是一个Golang命令行工具 ,让Go测试变得容易.它根据目标源文件的函数和方法签名生成表驱动的测试(TDD).任何测试文件中新的依赖都会被自动倒入 Demo 下面是 ...
- MySQL--线程池(Thread Pool)
================================================================= 线程池技术 在MySQL社区版中,MySQL使用one-thread ...
- scala函数等号省略
例1: 此时没有写返回值,但是有等号,函数会自己推断返回值,此时的返回值是Int def add(x:Int, y:Int) = { x+y} 例2: 此时没有写返回值,也没有等号,无论函数内部有没有 ...
- day43 数据库学习egon的博客 索引
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架
nightwatchjs 是基于nodejs&& webdriver 协议的自动化测试&&持续集成框架 参考架构 参考资料 http://nightwatchjs.or ...
- NSNull floatValue intValue 找不到指定方法解决方式
最近遇到一个问题: 因为后台人员对于接口数据没有做空值处理.导致client接收到的有些数据为空(NSNull),而针对此类数据恰好client的存储结构为int和float类型.类型 ...
- Delphi 初始化的顺序
一.存储结构: 初始化单元存储在一个数组InitContext.InitTable^.UnitInfo中,其中UnitInfo是以数组的方式存储的,其中InitTable的定义为: 其中InitTab ...