注意:以后工作中代码中 不允许出现警告

自定义注解

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注解注意点的更多相关文章

  1. Java注解

    Java注解其实是代码里的特殊标记,使用其他工具可以对其进行处理.注解是一种元数据,起到了描述.配置的作用,生成文档,所有的注解都隐式地扩展自java.lang.annotation.Annotati ...

  2. 19.Java 注解

    19.Java注解 1.Java内置注解----注解代码 @Deprecated                                    //不推荐使用的过时方法 @Deprecated ...

  3. Java注解入门

    注解的分类   按运行机制分:   源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...

  4. java注解(Annotation)解析

    注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...

  5. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  6. attilax.java 注解的本质and 使用最佳实践(3)O7

    attilax.java 注解的本质and 使用最佳实践(3)O7 1. 定义pojo 1 2. 建立注解By eclipse tps 1 3. 注解参数的可支持数据类型: 2 4. 注解处理器 2 ...

  7. paip.java 注解的详细使用代码

    paip.java 注解的详细使用代码 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  8. JAVA 注解的几大作用及使用方法详解【转】

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  9. 框架基础——全面解析Java注解

    为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...

  10. Java注解配置

    Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annota ...

随机推荐

  1. 您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8 密钥集不存在

    支付宝突然报异常 您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8 经排查:系统日志 System.Security.Cryptography.CryptographicEx ...

  2. Google BERT应用之《红楼梦》对话人物提取

    Google BERT应用之<红楼梦>对话人物提取 https://www.jiqizhixin.com/articles/2019-01-24-19

  3. python 使用夜神模拟器

    安装版本为6.2.8.0 1.模拟器安装证书 打开模拟器,点击浏览器 在浏览器里输入:mitm.it 出现如下: 选择安卓进行安装 比如:sks123 2.设置代理 输入密码:sks123 上面刚才设 ...

  4. qt5 qmake开发

    mkdir hello helloworld.cpp #include <QPushButton> #include <QApplication> int main(int a ...

  5. Spring Cloud上下文:应用程序上下文服务

    Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点.Spring Cloud建立在此之上,并添加了一些可能系统中所 ...

  6. Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)

    测试原理和方法 找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前session会话来判断要修改密码的账 号,这种情况下能否对 ...

  7. (转载)理解Spatial Transformer Networks

    理解Spatial Transformer Networks 转载于:知乎-SIGAI 书的购买链接 书的勘误,优化,源代码资源 获取全文PDF请查看:理解Spatial Transformer Ne ...

  8. bat文件重命名指定路径下文件

    ren "E:\产品\Planning\C1-Planning11\C1-Planning11\target\123" 456 此命令是将文件123重命名为456 注意:456是文 ...

  9. https本地自签名证书添加到信任证书访问

    1.背景 本文适用于基于https(http+ssl)的网站通信.本地调试等,上线是请寻找免费 ssl证书申请. 本地调试过程中,一些特殊的场景需要我使用http+ssl通信,比如在Chrome中使用 ...

  10. java导出pdf功能记录

    这几天已在做处理导出pdf文件的功能,摸索了几天总算可以了.记录下这几天遇到的问题. 1.网上基本都是基于Itext5和Itext7来处理的.我最终是在Itext5上成功了,itext7应该是模板出问 ...