- 浏览: 192053 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Java中annotation注解
2. 自定义annotation注解
3. 注解可以修饰注解
1. @Override注解,表示重写。 public class OverrideTest{ @Override public String toString(){ return "This is OverrideTest"; } public static void main(String[] args){ OverrideTest test = new OverrideTest(); System.out.println(test); } } 运行结果: This is OverrideTest 2. @Deprecated注解,表示不建议被使用 public class DeprecatedTest{ @Deprecated public void doSomething(){ System.out.println("do something!"); } public static void main(String[] args){ DeprecatedTest test = new DeprecatedTest(); test.doSomething(); Date date = new Date(); System.out.println(date.toLocaleString()); } } 运行结果: do something! 2015-7-6 23:07:50 3. @SuppressWarnings({"unchecked", "deprecation"})注解,表示压制警告 import java.util.Date; import java.util.Map; import java.util.TreeMap; public class SuppressWarningsTest{ @SuppressWarnings({"unchecked", "deprecation"}) public static void main(String[] args){ Map map = new TreeMap(); map.put("hello", new Date()); System.out.println(map.get("hello")); Date date = new Date(); System.out.println(date.toLocaleString()); } } 运行结果: Mon Jul 06 23:08:04 CST 2015 2015-7-6 23:08:04
2. 自定义annotation注解
自定义annotation:@interface表示定义一个注解。 用@AnnotationTest引用注解,如果注解中是用value来表示值的话,可以直接使用@AnnotationTest(EnumTest.Welcome) 来表示,否则必须使用完整的valuexxx=valueyyy来表示@AnnotationTest(value2 = EnumTest.Welcome)。 自定义注解:当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种赋值方式,即明确指定给谁赋值。 default "hello"是设置其默认值为hello,如果赋值就为所赋的值,否则就是hello。 注解中有几个value值,就必须对几个value值都进行赋值(或者有默认值)。 接口不继承注解。 当我们使用@interface关键字定义一个注解时,该注解隐含地继承了java.lang.annotation.Annotation接口;如果我们定义了一个接口,并且让该接口继承自Annotation,那么我们所定义的接口依然还是接口而不是注解;Annotation本身是接口而不是注解。可以与Enum类比。 public @interface AnnotationTest{ String[] value1() default "hello"; EnumTest value2(); } enum EnumTest{ Hello, World, Welcome; } @AnnotationTest(value2 = EnumTest.Welcome) public class AnnotationUsage{ @AnnotationTest(value1 = {"world", "ABCD"}, value2 = EnumTest.World) public void method(){ System.out.println("usage of annotation"); } public static void main(String[] args){ AnnotationUsage usage = new AnnotationUsage(); usage.method(); } } 运行结果: usage of annotation
3. 注解可以修饰注解
Retention类 @Retention(RetentionPolicy.CLASS) @Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.SOURCE) import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.CLASS) public @interface MyAnnotation{ String hello() default "shengsiyuan"; String world(); } MyAnnotation(hello = "beijing", world = "shanghai") public class MyTest{ @MyAnnotation(hello = "tianjin", world = "shangdi") @Deprecated @SuppressWarnings("unchecked") public void output(){ System.out.println("output something!"); } } RetentionPolicy.RUNTIME就可以读取到信息,用反射来读取MyTest.java的注解信息。 import java.lang.annotation.Annotation; import java.lang.reflect.Method; public class MyReflection{ public static void main(String[] args) throws Exception{ MyTest myTest = new MyTest(); Class<MyTest> c = MyTest.class; Method method = c.getMethod("output", new Class[]{}); if(method.isAnnotationPresent(MyAnnotation.class)){ method.invoke(myTest, new Object[]{}); MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation.class); String hello = myAnnotation.hello(); String world = myAnnotation.world(); System.out.println(hello + ", " + world); } Annotation[] annotations = method.getAnnotations(); for(Annotation annotation : annotations){ System.out.println(annotation.annotationType().getName()); } } } 运行结果: output something! tianjin, shanghai test10.MyAnnotation java.lang.Deprecated @Target(ElementType.METHOD)表示只能修饰方法 import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target(ElementType.METHOD) public @interface MyTarget{ String value(); } public class MyTargetTest{ @MyTarget("hello") public void doSomething(){ System.out.println("hello world"); } } @Documented注解 可以在产生帮助文档是将注解加到文档中 import java.lang.annotation.Documented; @Documented public @interface DocumentedAnnotation{ String hello(); } public class DocumentedTest{ @DocumentedAnnotation(hello = "welcome") public void method(){ System.out.println("hello world"); } }
发表评论
-
Java中获取IP地址、子网掩码、网关地址
2019-06-26 10:53 01. Java中获取IP地址、子网掩码、网关地址、ping连通 ... -
Java中ThreadLocal
2019-04-19 10:44 01. Java中ThreadLocal Java中的Th ... -
Java中原子性锁synchronized、Lock
2019-04-18 15:19 01. synchronized依赖JVM 1) 修饰代码 ... -
Java中原子性Atomic
2019-04-18 14:45 01. Atomic包简介 java.util.concu ... -
开发常用链接
2019-03-26 11:21 0在线工具:http://tool.oschina.net/ ... -
java1234学习目录
2019-03-21 11:08 01-01-01 N01 J2SEv2(41课时) ... -
Java中TCP和UDP
2018-10-25 10:55 3511. 网页内容获取 Url1.java impor ... -
Java中Thread线程
2018-10-25 09:38 3911. 实现线程的两种方式 1. 继承Thread类并重写 ... -
Java中serializable序列化
2018-10-24 14:46 4801. 序列化 transient不会被序列化。 imp ... -
Java中CharSet集
2018-10-24 11:31 5471. CharSet集 import java.nio. ... -
Java中RandomAccessFile类
2018-10-24 11:30 5101. RandomAccessFile类 1. 使用Ra ... -
Java中I/O的字符流InputStreamReader和OutputStreamWriter
2018-10-22 09:43 4461. InputStreamReader和OutputStre ... -
Java中其它输入输出流
2018-10-22 09:08 4771. ByteArrayInputStream流 以ar ... -
Java中I/O的OutputStream流
2018-10-22 08:54 4911. Java中I/O的OutputStream流 1. ... -
Java中I/O的InputStream流
2018-10-22 08:42 4691. Java中I/O的InputStream流 1. ... -
Java中I/O的File类
2018-10-19 13:45 4441. Java中I/O的File类 1. 在window ... -
Java中innerClass内部类
2018-10-18 09:37 4501. Java中innerClass内部类 用AA.BB ... -
Java中adapter适配器
2018-10-18 08:36 5891. Java中adapter适配器 适配器adapte ... -
Java中awt包
2018-10-17 11:26 17171. Java中awt包 AWT事件模型Event 1 ... -
Java中frame对象
2018-10-17 10:56 6831. Java中frame对象 1. Frame对象 ...
相关推荐
Java.Annotation注解.part4
Java.Annotation注解.part3
Java.Annotation注解.part2
Java.Annotation注解.part1
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
Java Annotation注解技术是现代Java开发中不可或缺的一部分,它通过提供元数据增强了代码的表达能力,简化了代码的编写和维护,同时也促进了框架和工具的高效开发。了解和掌握注解技术对于提升Java开发的效率和质量...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...
Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...
在Java编程语言中,注解(Annotation)是一种元数据,用于向编译器、工具或运行时环境提供额外的信息。自JDK 1.5版本起,Java引入了注解的概念,这极大地简化了代码的编写,尤其是在框架级别的开发中。本文将深入...
Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...
Java Annotation(注解)是自 Java 5.0 开始引入的一种语言元素,它为开发者提供了在代码中添加元数据的能力。简单来说,注解就像是对代码进行标记或注释的方式,这些标记可以在编译时或者运行时被读取并执行特定的...
### Java 注解Annotation实例上手文档 #### 一、引言与基础知识 Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架...
Java注解,也称为 Annotation,是Java编程语言中的一种元数据机制,用于向编译器、JVM(Java虚拟机)或工具提供有关代码的信息。这些信息可以用来进行编译时检查、运行时处理,或者作为配置信息。注解不是程序的一...
如果你想知道java annotation是什么?你可以看看
### Spring框架中的Annotation注解详解 #### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。...
### Annotation注解的深入解析与应用 #### 一、Annotation概览 ##### 1.1 何为元数据 元数据,在计算机科学中,是指用于描述数据的数据,它提供了关于数据本身的附加信息,有助于理解、解释和管理数据。在编程...