`
hubin4
  • 浏览: 92976 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java 1.5 annotation-2

    博客分类:
  • JAVA
阅读更多
java 1.5 注解-2[非常重要 比每举重要]

刚刚只是说了什么是 注解 ,皮毛都不是

现在要自己弄注解了

就是要 @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 新出的
分享到:
评论

相关推荐

    java1.5 annotation注释源代码

    java1.5 annotation注释源代码,

    java7源码翻译-recap-spring:回顾春天

    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 -------> ...

    什么是Annotation?

    Annotation java1.5 jdk.15 简单介绍

    Annotation使用手册

    Annotation使用手册,提供JAVA 1.5+版本关于Annotation的新特性的详细说明和使用

    实战篇:设计自己的Annotation

    实战篇:设计自己的Annotation

    javaweb项目常用jar包

    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解析语法树(AST)使用JDT相关库

    包括以下包:jdt-3.2.1-r321_v20060823.jar、 jdt-3.3.0-v20070607-1300.jar、jdt-3.4.2_r894.jar、jdt-compiler.jar、org.eclipse.datatools.enablement.jdt.classpath...org.eclipse.m2e.jdt_1.5.1.20150109-1820.jar

    Java测试新技术TestNG和高级概念.part2

    第2章 测试设计模式 2.1 针对失败而测试 2.2 工厂 2.3 数据驱动测试 2.4 异步测试 2.5 测试多线程代码 2.6 性能测试 2.7 模拟和桩 2.8 依赖的测试 2.9 继承和annotation范围 2.10 测试分组 2.11 代码覆盖率 2.12...

    Java测试新技术TestNG和高级概念.part1

    第2章 测试设计模式 2.1 针对失败而测试 2.2 工厂 2.3 数据驱动测试 2.4 异步测试 2.5 测试多线程代码 2.6 性能测试 2.7 模拟和桩 2.8 依赖的测试 2.9 继承和annotation范围 2.10 测试分组 2.11 代码覆盖率 2.12...

    Java注解Annotation

    JDK1.5之后的特征 用于说明程序 一般在框架中使用 格式: @AnnotationName 文档注释: @param @return @Exeception 从根本上是一个注释,不存在代码编译,不会生成对应的.class字节码问题,只是提供给JavaDoc API文件...

    Annotation 入门介绍

    JDK5.0 Annotation 入门介绍 PDF

    Java JDK实例宝典

    第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...

    疯狂JAVA讲义

    1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的...

    java进阶技术:泛型、反射、注解

    泛型是Java SE 1.5的新特性,好处是在...注解(Annotation)是JDK1.5及以后引入的新特性,与类、接口、枚举是在同一个层次。可声明在包、类、字段、方法、局部变量、方法参数等前面,用来对这些元素进行说明,注释。

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    想自己写框架?不了解Java注解(Annotation)机制可不行,来跟我一起通过源码深入Java注解机制

    注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Java™ Servlet 规范.

    1.5 与 Java 平台企业版的关系 ......................................................................................................................14 1.6 与 Java Servlet 规范 2.5 版本间的兼容性 .........

    JSF2学习用范例

    在weblogic9 tomcat5-7 JDK1.5测试通过 weblogic9和tomcat5需要el.jar支持,已经在文件夹中标明,只需放入lib目录下即可 需要注意的是weblogic9和tomcat5支持的jar包不能在tomcat6-7版本使用否则无法启动! 分类: 1...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    <mvc:annotation-driven /> <context:component-scan base-package="Controller" /> <property name="prefix" value="/WEB-INF/views/" /> GeneralController类代码 package Controller; import org...

Global site tag (gtag.js) - Google Analytics