java注解注意点
注意:以后工作中代码中 不允许出现警告
自定义注解
1:自定义注解并没有发挥它的作用,而Eclipse自带的注解通过反射另外有一套代码,可以发挥它的作用,例如:跟踪代码。。。。。。
2:如果自定义的代码中有属性,
a,default 有默认值 则在使用注解时,可以不用赋值
b:没有默认值,属性名为value,使用注解时可以直接赋值
c:没有默认值,属性名不为value,使用注解时必须属性名=值。
d:如果注解属性的数据类型为数组类型,赋多个值时必须使用{}括起来;但若只赋一个值,则无需使用{}
package classTwo03;
public @interface Override {
int a();
}
package classTwo03;
public class Student {
public String name="xioaming";
@Override(a=4)
public boolean equals(Object obj) {
return super.equals(obj);
}
}
@FunctionalInterface
interface Mammal{
void run() ;
}
内置注解
@Override只能用于方法上,不能用于属性,类,非重写方法,注解重写的方法
@Deprecated 注解过时的方法
@ SupperssWarnings("参数") 参数为unused 代表为这个变量没有用到 。
参数为deprecation:代表使用已被@Deprecated标注的程序元素
参数为serial :代表在可序列化的类上缺少serialVersionUID定义
package Depracated;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Test implements Serializable{
public static void main(String[] args) {
@SuppressWarnings("unused")
String name;
move(new Bike());
move(new Car());
}
@Deprecated
public static void move(Bike bike) {
System.out.println("用自行车");
}
public static void move(Car car) {
System.out.println("用汽车");
}
}
class Bike{
}
class Car {
}
元注解
1:Target({参数,参数......})参数可以为 ElementType.FIELD 代表这个被修饰的注解只能注解全局变量
ElementType.METHOD 代表这个被修饰的注解只能注解方法
ElementType.PACKAGE代表这个被修饰的注解只能注解包
ElementType.PARAMETER代表这个被修饰的注解只能注解参数
ElementType.TYPE代表这个被修饰的注解只能注解类,接口,枚举
2:Retention(参数)参数可以为RetentionPolicy.SOURCE代表这个被修饰的注解,所修饰的东西在源码结束后就没有这个注解了
RetentionPolicy.CLASS代表这个被修饰的注解,所修饰的东西在字节码结束后就没有这个注解了
RetentionPolicy. RUNNING代表这个被修饰的注解,所修饰的东西在运行结束后就没有这个注解了
默认是字节码阶段
3:@Documented 代表这个被修饰的注解可以在生成的文档中显示出来
Eclipse中文档如何显示:1):首先在src上右键——选择Export——选择java下的javadoc——
选择出javadoc.exe(在bin目录下)——yes就可以了
这个时候已经生成了文档,我们在java工程中看到
2):如何找到java工程的所在文件呢
java工程右键——porperties——location后面的那个小图标——就看到啦doc——
点击doc——我们看到有一个index.html——点击在网页页面就看到了我们的程序文档
在这个文档中就可以看到注解是否显示了出来
4:@Inherited 代表这个被修饰的注解可以被子类同样继承
package Practice; 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; @Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface RequestMapping { }
package Practice;
public class Student extends Father {
}
@RequestMapping
class Father{
}
注解工作原理
反射和注解综合
package Practice; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestMapping { }
package Practice;
public class Student {
@RequestMapping
@Deprecated
public void run(int i) {
}
public void run() {
}
public void eat() {
}
}
package Practice; import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; public class Test { @SuppressWarnings("rawtypes")
public static void main(String[] args) {
Class clazz = Student.class;
try {
Method [] mothods = clazz.getDeclaredMethods();
for (Method method : mothods) {
Annotation [] anns=method.getAnnotations();
for (Annotation ann : anns) {
System.out.println(ann);
}
}
} catch (Exception e) {
e.printStackTrace();
}
} }
java注解注意点的更多相关文章
- Java注解
Java注解其实是代码里的特殊标记,使用其他工具可以对其进行处理.注解是一种元数据,起到了描述.配置的作用,生成文档,所有的注解都隐式地扩展自java.lang.annotation.Annotati ...
- 19.Java 注解
19.Java注解 1.Java内置注解----注解代码 @Deprecated //不推荐使用的过时方法 @Deprecated ...
- Java注解入门
注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...
- java注解(Annotation)解析
注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...
- JAVA 注解的几大作用及使用方法详解
JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...
- attilax.java 注解的本质and 使用最佳实践(3)O7
attilax.java 注解的本质and 使用最佳实践(3)O7 1. 定义pojo 1 2. 建立注解By eclipse tps 1 3. 注解参数的可支持数据类型: 2 4. 注解处理器 2 ...
- paip.java 注解的详细使用代码
paip.java 注解的详细使用代码 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...
- JAVA 注解的几大作用及使用方法详解【转】
java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...
- 框架基础——全面解析Java注解
为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...
- Java注解配置
Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annota ...
随机推荐
- Java解决java.io.FileNotFoundException: E:\work\work (拒绝访问。)
一.问题 在使用FileInputStream或FileOutputStream时会遇到如下问题1和问题2. 问题1: java.io.FileNotFoundException: .\xxx\xxx ...
- shell 命令行参数(基本)
命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...
- MyBatis(七):mybatis Java API编程实现增、删、改、查的用法
最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...
- paddlepaddle如何预加载embedding向量
使用小批量数据时,模型容易过拟合,所以需要对全量数据进行处理,我是用的是word2vec训练的词向量. 那么训练好对词向量如何加载呢? #!/usr/bin/env python # -*- codi ...
- LocalDateTime
@Component public class DateUtil { public final static String EMPTY_SRING = ""; public fin ...
- java.lang.UnsupportedOperationException 异常分析
今天将一个数组转换成 List 然后进行 remove 操作时却抛出 java.lang.UnsupportedOperationException 异常. String pattern = &quo ...
- VUE-012-图表 v-charts 学习(一)饼图展示状态
软件质量平台中需要输出各种各样的图表数据,以 v-charts 中的饼图为例,记录图表使用实现过程. v-charts :https://github.com/ElemeFE/v-charts doc ...
- Sword CRC算法原理
CRC校验原理 CRC校验其根本思想a.发送端和接收端约定一个整数 bb.发送端在原始数据帧后面附加一个数 k ,产生一个新的数据帧c.接收端接收到数据帧后,对接收的数据帧和整数 b 进行位异或操作, ...
- cp复制
将Data文件复制到B目录下: cp -r /home/hp/Data /home/hp/B/
- python2与python3的区别齐全【整理】
本文链接:https://blog.csdn.net/pangzhaowen/article/details/80650478 展开 一.核心类差异1. Python3 对 Unicode 字符的原生 ...