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

java 1.5 annotation-3 设值让反射拿

    博客分类:
  • JAVA
阅读更多
java 1.5 annotation 的use

前面的什么都没有说,只是介绍基本知识
现在说说用途

注解里可以加属性
反射后可以得到

----------------------
擦播一下
每举和注解都是特殊的类
不可以new
创建每举就是往里加元素
创建注解@加标记
AnnoDemo的注解
public @interface AnnoDemo{
String value();
}
---------------------
@Target({ElementType.METHOD,ElementType.TYPE})
这里肯定看不懂了
有两个知识点
一,数组中只有一个元素时
{}可以不写,有两个了,肯定要写了

还有Target里,肯定有个属性叫value
★而且,还是数组
----------------

-----看看code吧
---------------------------
package com.ncs;

public class EnumWithAbstractMethod {

	public static void main(String[] args) {
		TrafficLights trafficLights = TrafficLights.GREEN;
		System.out.println(trafficLights.time); //30
		trafficLights = TrafficLights.YELLOW;
		System.out.println(trafficLights.time); //3
	}
	
	public enum TrafficLights{
		RED(30){
			public TrafficLights nextLight(){
				return GREEN;
			}
		}
		,GREEN(30){
			public TrafficLights nextLight(){
				return YELLOW;
			}
		},
		YELLOW(3){
			public TrafficLights nextLight(){
				return RED;
			}
		};
		//每个灯都有下一个灯的方法,
		//我们用 抽象 方法
		public abstract TrafficLights nextLight();
		//上面这行不行的,需要你里面的 constants 实现 方法
		//所以在RED后面的一对{}表示一个子类的实现,子类的名字不知道
		
		private int time;
		//构造方法只可以是private
		//然后上面出错了 修改 加() 就完全OK了
		private TrafficLights(int time){this.time = time;}
	}

}


--------------------------------------

package com.ncs.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.ncs.EnumWithAbstractMethod;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface MyAnnotationDemo {
	//就把这个注解 用到 AnnotationDemo上看看再说吧
	String color() default "green";
	//类似接口,public 的 抽象的
	String value();
	
	int[] arr() default {2,5}; 
	//@SuppressWarnings("deprecation")像这个,
	//实际上的指定了一个特殊的属性 value
	//那你就可以省略,直接写 字符串
	//但是仅仅这样也不行,color还没有
	//所以 还可以 指定默认值
	//String color() default "green";
	//这样 compiler就让你过了
	
	//下面玩高级些
	//每举一下,用前面写的每举
	//默认有个红灯 我等下 打印 NEXT 灯, 看看是什么灯出来了
	EnumWithAbstractMethod.TrafficLights light() default  EnumWithAbstractMethod.TrafficLights.RED;
	
	//当然 注解里还可以有注解
	//这自己好好弄弄吧,慢慢理解 
	//详细的东西可以
	//去:The Java Language Specification,Third Edition
	
}


-----------------------------


package com.ncs.annotation;

@MyAnnotationDemo(color="red",value="var",arr={1,2,3})
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.color());//output red
			System.out.println(myAnnotationDemo.value());
			System.out.println(myAnnotationDemo.arr().length);
			
			/*
			 * red
				var
				3
			 */
			//虽然都没有写,但是有默认值,就出来 绿灯了
			System.out.println(myAnnotationDemo.light().nextLight().name()); //out GREEN
		}
	}

}


-------------------
分享到:
评论

相关推荐

    java1.5 annotation注释源代码

    Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...

    JDK1.5的annotation

    标题 "JDK1.5的annotation" 指的是Java Development Kit 1.5引入的注解(Annotation)特性。注解是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器或Java虚拟机(JVM)在编译时或运行时读取和...

    JAVA_API1.5.rar_java1.5 api

    3. **自动装箱与拆箱**:Java 1.5开始支持基本类型的包装器类(如Integer, Boolean等)与基本类型之间的自动转换。这使得处理包装器对象和基本类型变得更加方便。 4. **变量赋值增强(Enhanced for loop)**:也...

    java jdk1.5

    Java JDK 1.5,全称为Java Development Kit 1.5,是Oracle公司(原Sun Microsystems)发布的Java编程语言的一个重要版本。这个版本在2004年发布,引入了许多新特性和改进,极大地提升了Java的开发效率和性能。下面...

    Java虚拟机1.5

    9. **内省增强**:Java 1.5增强了反射API,使得在运行时获取和修改类、方法和字段的信息更加容易。 10. **并发改进**:Java 5引入了新的并发工具类,如`java.util.concurrent`包,包含`Executor`框架、`Semaphore`...

    jdk1.5、1.6压缩包

    6. **注解(Annotation)**:注解为元数据提供了支持,用于提供编译器或运行时系统的信息,例如用于编译时检查、代码生成或运行时反射。 JDK 1.6(2006年发布)在1.5的基础上继续优化和添加新功能,其中一些重要的...

    什么是Annotation?

    在Java 1.5版本中引入了一个重要的新特性——**Annotation**(注解)。Annotation本质上是一种元数据(即关于数据的数据),它提供了一种机制来关联程序元素(如类、方法、属性等)与其附加信息。 在早期的Java开发...

    Java实战篇:设计自己的Annotation

    本文将重点介绍Java 1.5及以后版本中内置的三种常用注解类型及其应用方式,并进一步探讨如何自定义Annotation。 **1.1 @Override 注解** - **定义**:`@Override`注解用于标记重写(override)父类的方法。它只...

    Java自定义注解Annotation的使用

    ### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...

    基于Annotation的Java单元测试框架.pdf

    本文主要介绍了基于Annotation的Java单元测试框架,讨论了Annotation在Java EE中的应用、反射技术的使用和JUnit单元测试框架的结合,建立了一个自动化单元测试框架结构。 一、Annotation概述 Annotation是Java 5中...

    Annotation使用手册

    **Annotation** 在 Java 1.5+ 版本中被引入,作为一种与程序元素关联任何信息或元数据(metadata)的途径。从某种程度上看,Annotation 类似于修饰符,可以应用于各种 Java 程序元素,包括包、类型、构造方法、方法...

    Java实战篇:设计自己的Annotation.pdf

    ### Java实战篇:设计自己的Annotation #### 一、概述 在Java编程中,注解(Annotation)作为一种元数据,能够为代码提供额外的信息,并且在编译时或运行时可以被处理工具读取和利用。自Java 1.5版本引入以来,...

    Annotation(注解)详细教程,jdk新特性

    Annotation(注解)是Java编程语言的一个重要特性,自JDK 1.5引入以来,逐渐成为编写可维护和可扩展代码的关键工具。注解提供了一种方式,使得程序员可以在代码中添加元数据(metadata),这些数据不直接影响代码...

    Java注解Annotation解析

    Java注解(Annotation)是Java语言中的一个重要特性,自Java 1.5版本引入以来,它在软件开发中扮演了不可或缺的角色。注解是一种元数据,它可以附加到源代码的不同元素上,如类、方法、变量等,提供了额外的信息,...

    类的反射机制您的网络连接,请

    在Java 1.5引入的反射API使得开发者可以在编译期未知的情况下,动态地获取类的信息并执行相关操作。以下将详细介绍反射的基本概念、应用场景以及相关的API。 **反射基本概念** 1. **Introspection (内省)**:这是...

Global site tag (gtag.js) - Google Analytics