- 浏览: 96281 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jameswolf:
补肾啊!冬天多喝,但是补只是后招,别漏才是真理,呵呵
朋友告诉我的神粥秘方 -
wa327114652:
很想学习,但能再详细点吗?
for java beginner 5-2 - 自己实现枚举-下 -
superlittlefish:
不错,简单易懂.一直在看你的blog,感觉反射写的挺好的.让我 ...
for java beginner 15 下java反射在框架里的应用 读取properties文件
java 1.5 注解-2[非常重要 比每举重要]
刚刚只是说了什么是 注解 ,皮毛都不是
现在要自己弄注解了
就是要 @hubin
注解就相当于一个特殊的类,要用注解
得有人先开发好这个类
要用自己写的 注解 需要写三个类
注解类:
@interface A
{
}
应用了"注解类"的类
@A
class B
{
}
对用了注解类的类 进行反射操作的类
class C{
B.class.isAnnotionPresent(A.class);
A a = B.class.getAnnotion(A.class);
}
----------------------------
------------------------
-------------------------
------------------------------------------
运行后 什么都没有
那肯定是 if 没有成立
修改:
-------------------
------------------------
现在有了
@com.ncs.annotation.MyAnnotationDemo()
要在 注解 类上加 注解 告诉注解 ,你要保持到 运行时哦
注解的注解,元注解
数据的数据,元数据
信息的信息,元信息
@Retention(RetentionPolicy.RUNTIME)
要好好解释上面的一行
我现在是在*.java里写的这行
然后javac把这个compile为 *.class
compile时,会把*.java里的一些东西去了,比如// /**/ comments
@注解也可能会去掉,
所以我们还要告诉 javac ,这个注解要保持到什么时候
如果说不要了,那么等你拿到*.class 就看不到注解了
★即使compile到了*.class 文件
等我们用这个*.class的时候
还需要 classloader 去load 这堆字节码
此时,也会 放弃 一些 东西,不是统统load上来的
load时还会 做些处理,安全检查等....
不是你写个 二进制东西 就可以让 classloader 给你load的
所以注解有三个生命周期
RetetionPolicy.SOURCE ->java 源文件
RetetionPolicy.CLASS ->class文件
RetetionPolicy.RUNTIME ->内存里的字节码
默认值是在class 阶段
所以 刚刚第一次 没有出来什么
是因为 虽然在 *.class里是有的,但是classloader没有加载上来
后来我把它设置为@Retention(RetentionPolicy.RUNTIME)
就加载上来了
---再来看
@Override的生命周期是什么??
应该是 source
只是提示你有没有覆盖,变成class文件以后,这个就没有用了
@SuppressWarning
也是在 source
@Deprecated
要在runtime阶段
--------好好想想
-------------
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
上面行表示这可以加在 方法前,你写在类前 compiler都反对
如果希望可以出现在 类 , 方法 上
可以这样写:
@Target({ElementType.METHOD,ElementType.TYPE})
现在都可以,看清楚是TYPE,而不是CLASS
为什么呢??
Type 是 class的爸爸,
1.5后,有每举,有注释,有接口...都是 类
他们和类都是兄弟关系,类不大了,
最大的是type了
Interface Type 也是1.5 新出的
刚刚只是说了什么是 注解 ,皮毛都不是
现在要自己弄注解了
就是要 @hubin
注解就相当于一个特殊的类,要用注解
得有人先开发好这个类
要用自己写的 注解 需要写三个类
注解类:
@interface A
{
}
应用了"注解类"的类
@A
class B
{
}
对用了注解类的类 进行反射操作的类
class C{
B.class.isAnnotionPresent(A.class);
A a = B.class.getAnnotion(A.class);
}
----------------------------
package com.ncs.annotation; public @interface MyAnnotationDemo { //就把这个注解 用到 AnnotationDemo上看看再说吧 }
------------------------
package com.ncs.annotation; @MyAnnotationDemo public class AnnotationDemo { @SuppressWarnings("deprecation") public static void main(String[] args) { System.runFinalizersOnExit(true); //在ECLIPSE里会画删除线,提示方法过时 //其实在是告诉javac //写了@SuppressWarnings("deprecation") //就不警告了 } @Deprecated public static void sayHi() { //总有一天这个方法要过时, //但是你不敢删除, //因为N多人在用,你一删人家怎么 compile 呢? //但是你又想告诉人家 ,这方法过时了,怎么办?? //注解, System.out.println("hello,zxx"); } }
-------------------------
package com.ncs.annotation; public class MyAnnoTest { public static void main(String[] args) { //先判断 某个类 有没有 某个 注解 if(AnnotationDemo.class.isAnnotationPresent(MyAnnotationDemo.class)) { //cun zai de MyAnnotationDemo myAnnotationDemo = (MyAnnotationDemo)AnnotationDemo.class.getAnnotation(MyAnnotationDemo.class); System.out.println(myAnnotationDemo); } } }
------------------------------------------
运行后 什么都没有
那肯定是 if 没有成立
修改:
-------------------
package com.ncs.annotation; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotationDemo { //就把这个注解 用到 AnnotationDemo上看看再说吧 }
------------------------
现在有了
@com.ncs.annotation.MyAnnotationDemo()
要在 注解 类上加 注解 告诉注解 ,你要保持到 运行时哦
注解的注解,元注解
数据的数据,元数据
信息的信息,元信息
@Retention(RetentionPolicy.RUNTIME)
要好好解释上面的一行
我现在是在*.java里写的这行
然后javac把这个compile为 *.class
compile时,会把*.java里的一些东西去了,比如// /**/ comments
@注解也可能会去掉,
所以我们还要告诉 javac ,这个注解要保持到什么时候
如果说不要了,那么等你拿到*.class 就看不到注解了
★即使compile到了*.class 文件
等我们用这个*.class的时候
还需要 classloader 去load 这堆字节码
此时,也会 放弃 一些 东西,不是统统load上来的
load时还会 做些处理,安全检查等....
不是你写个 二进制东西 就可以让 classloader 给你load的
所以注解有三个生命周期
RetetionPolicy.SOURCE ->java 源文件
RetetionPolicy.CLASS ->class文件
RetetionPolicy.RUNTIME ->内存里的字节码
默认值是在class 阶段
所以 刚刚第一次 没有出来什么
是因为 虽然在 *.class里是有的,但是classloader没有加载上来
后来我把它设置为@Retention(RetentionPolicy.RUNTIME)
就加载上来了
---再来看
@Override的生命周期是什么??
应该是 source
只是提示你有没有覆盖,变成class文件以后,这个就没有用了
@SuppressWarning
也是在 source
@Deprecated
要在runtime阶段
--------好好想想
-------------
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
上面行表示这可以加在 方法前,你写在类前 compiler都反对
如果希望可以出现在 类 , 方法 上
可以这样写:
@Target({ElementType.METHOD,ElementType.TYPE})
现在都可以,看清楚是TYPE,而不是CLASS
为什么呢??
Type 是 class的爸爸,
1.5后,有每举,有注释,有接口...都是 类
他们和类都是兄弟关系,类不大了,
最大的是type了
Interface Type 也是1.5 新出的
发表评论
-
pull解析器通用解析XML与生成XML
2013-02-23 14:52 0pull解析器,简单易用,android都在用,肯定有他的优 ... -
java decompiler - a tool to view jar file
2012-02-15 22:26 1016有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 725################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 763download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 759D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 860简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1106023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1576java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-1
2009-11-30 21:07 1302java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 748019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 1026018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 17 配置文件的知识
2009-11-29 19:29 779017 配置文件的知识 刚刚已经说到 配置文件,我说放 工程 ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1381java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1122java 反射 数组的反射 ArrayList HashSe ... -
for java beginner13java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
2009-11-29 12:35 931java 反射 数组的反射(上 ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 1017java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner11 java 反射 Method类
2009-11-29 08:30 1276java 反射 Method类 str1.charAt() ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3537java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1389java 反射 的概念 和 Constructor 类 反 ... -
for java beginner 8 java 反射的基础基础Class的理解
2009-11-29 07:09 1021java 反射 的基础基础 Class的理解 反射 在 1 ...
相关推荐
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
标题中的“异常解决:错误:namespace element 'annotation-config' … on JDK 1.5 and higher”涉及的是在Java开发过程中遇到的一个错误,特别是在使用Spring框架时可能会遇到。这个错误通常表明在JDK 1.5及更高版本...
Java 1.5 API,也被称为Java SE 5.0,是Java开发工具包的一个重要版本,它引入了许多新特性,增强了语言的功能性和效率。这个API文档提供了详细的类和接口说明,帮助开发者理解和使用Java 1.5中的新功能。 在压缩包...
- EJB 3.0:这是企业Java Bean(EJB)的重大改革,引入了注解(Annotation)以简化部署和配置,使得EJB更加轻量级和易用。 - Servlet 2.5:增强了Servlet规范,提供了对HTTP会话监听器、过滤器链和异步处理的支持...
Java 1.5,也被称为Java 5.0,是一个重要的Java开发平台版本,它引入了许多新特性,改进了已有的API,并提升了编程效率。Java 2 Platform Standard Edition(J2SE)5.0是Java SE平台的一个里程碑,为开发者提供了更...
标题 "JDK1.5的annotation" 指的是Java Development Kit 1.5引入的注解(Annotation)特性。注解是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器或Java虚拟机(JVM)在编译时或运行时读取和...
除此之外,Java 1.5还包括了其他一些改进,如类型推断(Type Inference)在泛型中的应用,增强了注解(Annotation)的支持,以及对变量初始化的改进等。这些特性共同提高了Java的开发效率和代码质量,为后来的版本...
Java JDK 1.5,全称为Java Development Kit 1.5,是Oracle公司(原Sun Microsystems)发布的Java编程语言的一个重要版本。这个版本在2004年发布,引入了许多新特性和改进,极大地提升了Java的开发效率和性能。下面...
2. **枚举类型**:在Java 1.5之前,枚举通常通过常量类实现,而Java 5引入了内置的枚举类型,使得枚举更易于使用和管理,且支持更多的面向对象特性,如继承和方法。 3. **自动装箱与拆箱**:Java 5引入了自动装箱和...
Annotation Config Spring 3.0 ------> 2010 - 2012 Spring 3.2 ------> 2012 -- Support for Java7, Hibernate, Servlet 3.0 -- Required Java 1.5+ -- Java Configuration Appraoch Spring 4.0 -------> ...
本压缩包包含了JDK的两个重要版本:1.5(也称为Java 5)和1.6(Java 6),这两个版本在历史上对Java社区有着深远的影响。 JDK 1.5(2004年发布)是Java发展的一个重要里程碑,引入了许多新特性,极大地提升了开发...
在Java 1.5版本中引入了一个重要的新特性——**Annotation**(注解)。Annotation本质上是一种元数据(即关于数据的数据),它提供了一种机制来关联程序元素(如类、方法、属性等)与其附加信息。 在早期的Java开发...
虽然原文中提到的“Metadata”没有给出具体实现细节,但我们可以推测这里指的是 Java 1.5 中引入的注解(Annotation)。注解是一种用于向源代码添加元数据的方法,它允许开发者为代码添加额外的信息,而不影响代码的...
本文将重点介绍Java 1.5及以后版本中内置的三种常用注解类型及其应用方式,并进一步探讨如何自定义Annotation。 **1.1 @Override 注解** - **定义**:`@Override`注解用于标记重写(override)父类的方法。它只...
自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,使得开发变得更加简洁高效。随着时间的推移,这种“零...
jackson-annotation-2.3.0.jar jackson-core-2.3.3.jar jackson-databind-2.3.3.jar java_websocket.jar javassist-3.11.0.GA.jar jaxen-1.1.jar jboss-logging-3.1.4.GA.jar jboss-logging-annotations-...
Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.5. [2] Oracle Corporation. Java SE 8 API Documentation. [3] JUnit.org. JUnit 4.12 API Documentation. [4] Eclipse Foundation. Eclipse ...