<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->import java.lang.annotation.*;
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER}) //用于字段,方法,参数
@Retention(RetentionPolicy.RUNTIME) //在运行时加载到Annotation到JVM中
public @interface Field_Method_Parameter_Annotation {
Class type() default void.class; //定义一个具有默认值的Class型成员
String describ(); //定义一个没有默认值的String成员
}
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER}) //用于字段,方法,参数
@Retention(RetentionPolicy.RUNTIME) //在运行时加载到Annotation到JVM中
public @interface Field_Method_Parameter_Annotation {
Class type() default void.class; //定义一个具有默认值的Class型成员
String describ(); //定义一个没有默认值的String成员
}
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class AnnotationTest {
@Field_Method_Parameter_Annotation(describ="字段编号",type=int.class) //注释字段
int id;
@Field_Method_Parameter_Annotation(describ="字段姓名",type=String.class)//注释字段
String name;
@Constructor_Annotation()//采用默认构造方法
public AnnotationTest()
{
}
@Constructor_Annotation("立即初始化构造方法.") //注释构造方法
public AnnotationTest(
//注释构造方法参数
@Field_Method_Parameter_Annotation(describ="编号",type=int.class)
int id,
@Field_Method_Parameter_Annotation(describ="姓名",type=String.class)
String name
)
{
this.id = id;
this.name = name;
}
@Field_Method_Parameter_Annotation(describ="获得编号",type=int.class)
public int getId()
{
return id;
}
@Field_Method_Parameter_Annotation(describ="设置编号") //成员type,采用默认注释方法
public void setId(
//注释参数
@Field_Method_Parameter_Annotation(describ="设置编号",type=int.class)
int id
)
{
this.id =id;
}
@Field_Method_Parameter_Annotation(describ="获得姓名",type=String.class)
public String getName()
{
return name;
}
@Field_Method_Parameter_Annotation(describ="设置姓名")
public void setName(
@Field_Method_Parameter_Annotation(describ="姓名",type=String.class)
String name
)
{
this.name = name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//构造方法:
Constructor[] declaredConstructor = AnnotationTest.class.getDeclaredConstructors(); //获得所有的构造方法
for(int i=0;i<declaredConstructor.length;i++)
{
Constructor constructor = declaredConstructor[i]; //遍历构造方法
if(constructor.isAnnotationPresent(Constructor_Annotation.class)) //查看是否指定类型的注释
{
Constructor_Annotation ca = (Constructor_Annotation)constructor.getAnnotation(Constructor_Annotation.class);
System.out.println("ca.value()=: "+ca.value());
}
Annotation[][]parameterAnnotations = constructor.getParameterAnnotations();//获得参数注释
for(int j=0;j<parameterAnnotations.length;j++)
{
int length = parameterAnnotations[j].length;
if(length == 0) //如果为0,则表示没有为该参数添加注释
{
System.out.println("没有为该参数添加注释");
}
else
{
for(int k=0;k<length;k++)
{
//获得参数注释
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation)parameterAnnotations[j][k];
System.out.print(" "+pa.describ()); //参数描述
System.out.println(" "+pa.type()); //参数类型
}
}
}
System.out.println("****************");
}
//字段:
System.out.println("********字段的Annotation*************");
Field[] declaredFields = AnnotationTest.class.getDeclaredFields(); //获得所有的字段
for(int i=0;i<declaredFields.length;i++)
{
Field field = declaredFields[i];
//查看是否具有指定类型的注释:
if(field.isAnnotationPresent(Field_Method_Parameter_Annotation.class))
{
Field_Method_Parameter_Annotation fa = (Field_Method_Parameter_Annotation)field.getAnnotation(Field_Method_Parameter_Annotation.class);
System.out.print(" "+fa.describ()); //获得字段描述
System.out.println(" "+fa.type()); //获得字段类型
}
}
//方法
System.out.println("********方法的Annotation*************");
Method [] methods = AnnotationTest.class.getDeclaredMethods(); //获得所有的方法
for(int i=0;i<methods.length;i++)
{
Method method = methods[i];
//查看是否指定注释:
if(method.isAnnotationPresent(Field_Method_Parameter_Annotation.class))
{
Field_Method_Parameter_Annotation ma = (Field_Method_Parameter_Annotation)method.getAnnotation(Field_Method_Parameter_Annotation.class);
System.out.print(" "+ma.describ()); //获得方法描述
System.out.println(" "+ma.type()); //获得方法类型
}
Annotation[][]parameterAnnotations = method.getParameterAnnotations(); //获得所有参数
for(int j=0;j<parameterAnnotations.length;j++)
{
int length = parameterAnnotations[j].length;
if(length==0)
{
System.out.println("没有添加Annotation参数");
}
else
{
for(int k=0;k<length;k++)
{
//获得指定的注释:
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation)parameterAnnotations[j][k];
System.out.print(" "+pa.describ()); //获得参数描述
System.out.println(" "+pa.type()); //获得参数类型
}
}
}
System.out.println("********************");
}
}
}
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class AnnotationTest {
@Field_Method_Parameter_Annotation(describ="字段编号",type=int.class) //注释字段
int id;
@Field_Method_Parameter_Annotation(describ="字段姓名",type=String.class)//注释字段
String name;
@Constructor_Annotation()//采用默认构造方法
public AnnotationTest()
{
}
@Constructor_Annotation("立即初始化构造方法.") //注释构造方法
public AnnotationTest(
//注释构造方法参数
@Field_Method_Parameter_Annotation(describ="编号",type=int.class)
int id,
@Field_Method_Parameter_Annotation(describ="姓名",type=String.class)
String name
)
{
this.id = id;
this.name = name;
}
@Field_Method_Parameter_Annotation(describ="获得编号",type=int.class)
public int getId()
{
return id;
}
@Field_Method_Parameter_Annotation(describ="设置编号") //成员type,采用默认注释方法
public void setId(
//注释参数
@Field_Method_Parameter_Annotation(describ="设置编号",type=int.class)
int id
)
{
this.id =id;
}
@Field_Method_Parameter_Annotation(describ="获得姓名",type=String.class)
public String getName()
{
return name;
}
@Field_Method_Parameter_Annotation(describ="设置姓名")
public void setName(
@Field_Method_Parameter_Annotation(describ="姓名",type=String.class)
String name
)
{
this.name = name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//构造方法:
Constructor[] declaredConstructor = AnnotationTest.class.getDeclaredConstructors(); //获得所有的构造方法
for(int i=0;i<declaredConstructor.length;i++)
{
Constructor constructor = declaredConstructor[i]; //遍历构造方法
if(constructor.isAnnotationPresent(Constructor_Annotation.class)) //查看是否指定类型的注释
{
Constructor_Annotation ca = (Constructor_Annotation)constructor.getAnnotation(Constructor_Annotation.class);
System.out.println("ca.value()=: "+ca.value());
}
Annotation[][]parameterAnnotations = constructor.getParameterAnnotations();//获得参数注释
for(int j=0;j<parameterAnnotations.length;j++)
{
int length = parameterAnnotations[j].length;
if(length == 0) //如果为0,则表示没有为该参数添加注释
{
System.out.println("没有为该参数添加注释");
}
else
{
for(int k=0;k<length;k++)
{
//获得参数注释
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation)parameterAnnotations[j][k];
System.out.print(" "+pa.describ()); //参数描述
System.out.println(" "+pa.type()); //参数类型
}
}
}
System.out.println("****************");
}
//字段:
System.out.println("********字段的Annotation*************");
Field[] declaredFields = AnnotationTest.class.getDeclaredFields(); //获得所有的字段
for(int i=0;i<declaredFields.length;i++)
{
Field field = declaredFields[i];
//查看是否具有指定类型的注释:
if(field.isAnnotationPresent(Field_Method_Parameter_Annotation.class))
{
Field_Method_Parameter_Annotation fa = (Field_Method_Parameter_Annotation)field.getAnnotation(Field_Method_Parameter_Annotation.class);
System.out.print(" "+fa.describ()); //获得字段描述
System.out.println(" "+fa.type()); //获得字段类型
}
}
//方法
System.out.println("********方法的Annotation*************");
Method [] methods = AnnotationTest.class.getDeclaredMethods(); //获得所有的方法
for(int i=0;i<methods.length;i++)
{
Method method = methods[i];
//查看是否指定注释:
if(method.isAnnotationPresent(Field_Method_Parameter_Annotation.class))
{
Field_Method_Parameter_Annotation ma = (Field_Method_Parameter_Annotation)method.getAnnotation(Field_Method_Parameter_Annotation.class);
System.out.print(" "+ma.describ()); //获得方法描述
System.out.println(" "+ma.type()); //获得方法类型
}
Annotation[][]parameterAnnotations = method.getParameterAnnotations(); //获得所有参数
for(int j=0;j<parameterAnnotations.length;j++)
{
int length = parameterAnnotations[j].length;
if(length==0)
{
System.out.println("没有添加Annotation参数");
}
else
{
for(int k=0;k<length;k++)
{
//获得指定的注释:
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation)parameterAnnotations[j][k];
System.out.print(" "+pa.describ()); //获得参数描述
System.out.println(" "+pa.type()); //获得参数类型
}
}
}
System.out.println("********************");
}
}
}
相关推荐
《韩顺平java从入门到精通1-32课源码笔记》是一份全面而深入的Java学习资源,由知名讲师韩顺平精心讲解。这份资料涵盖了从Java基础到高级特性的全方位教学,旨在帮助初学者系统地掌握这门强大的编程语言。下面,我们...
本资源“JAVA基础入门到精通pdf”提供了一条系统学习Java的路径,适合初学者作为入门教程。以下是对Java基础知识的详细解读: 1. **Java概述**:Java是由Sun Microsystems(现为Oracle公司)于1995年推出的一种面向...
Spring AOP有两种实现方式:基于代理(proxy-based)和基于注解(annotation-driven)。基于代理的AOP通过JDK动态代理或CGLIB生成目标对象的代理,拦截并执行通知。注解驱动的AOP则是利用Spring的`@Aspect`注解来...
"韩顺平java从入门到精通的教学PPT"是一个专门为初学者和有志于深入理解Java编程的开发者设计的教育资源。韩顺平是一位知名的IT教育专家,他在Java教学方面有着丰富的经验,他的教程往往深入浅出,易于理解,深受...
"Java从入门到精通书籍的PPT" 提供了一条系统学习Java的路径,帮助初学者逐步掌握这门强大的编程语言。 在PPT中,通常会包含以下关键知识点: 1. **Java简介**:介绍Java的历史、特点和适用场景,强调其跨平台能力...
"Java从入门到精通课后答案"是一个专门为初学者设计的学习资源,旨在帮助那些对Java感兴趣但缺乏经验的“小白”们快速掌握这门强大的编程语言。 1. **基础语法**: - **变量与数据类型**:Java有八种基本数据类型...
《Java从入门到精通》是一本旨在帮助初学者掌握Java编程基础,并逐步提升至高级技术的书籍。配合PPT的学习资料,可以使得理论与实践结合得更为紧密,加深对知识的理解。 1. **Java简介** Java是由Sun Microsystems...
【Java_2从入门到精通】是一套完整的Java学习资源,PDG版可能指的是PDF电子版,适合初学者系统地掌握Java编程语言。本教程涵盖了Java的基础知识到高级特性的全面讲解,旨在帮助读者从零基础逐渐晋升为熟练的Java...
Java编程思想是Java开发者的...掌握以上这些Java思想,并将它们融入到编程实践中,将有助于提升你的Java编程能力,使你从初学者进阶为高手。不断学习和实践,Java的思想将逐渐成为你的本能,助你在编程世界中游刃有余。
这篇“java基础知识学习笔记”是为初学者设计的,涵盖了从入门到精通的关键概念,旨在帮助新手快速掌握Java编程。 首先,从入门阶段开始,Java的学习会从安装JDK(Java Development Kit)开始,这是编写、编译和...
Java学习基础是每个Java开发者入门时的必经之路,它为后续深入学习和开发奠定了坚实的基础。以下是一些关于Java学习基础的重要知识点: 1. **Java语言简介**:Java是一种面向对象的、跨平台的编程语言,由Sun ...
这个“JAVA学习(初学杂集)”的资源可能包含了帮助初学者入门Java编程的各种材料。尽管描述中提到“无用,不建议下载”,但这里我们将深入探讨Java学习的基础知识点,帮助你了解Java编程的基础。 1. **Java基础...
《Java编程思想》是 Bruce Eckel 的经典著作,第五版更是深入浅出地阐述了Java语言的核心概念和技术。...通过阅读此书,读者不仅可以学习到Java语言的精髓,还能提升自己的编程思维和解决问题的能力。
10. **注解(Annotation)**:自Java 5.0起,注解提供了一种元数据机制,可以用于编译器或运行时系统提供信息,例如用于代码的验证、序列化或运行时反射。 11. **多线程**:Java内置了对多线程的支持,通过实现...
通过这份详尽的Java自学资料,你可以系统地学习Java编程,从入门到精通,逐步建立起坚实的编程基础。记得理论与实践相结合,多编写代码,不断调试和完善,才能更好地掌握这门语言。祝你在Java学习之旅中取得丰硕的...
总的来说,《JAVA编程思想中文第3版》是一本全面而深入的Java学习资料,适合从初级到高级的Java开发者阅读,无论你是刚接触Java的新手,还是希望深化理解的有经验开发者,都能从中受益匪浅。通过阅读和实践书中的...
总之,“java课件(各章都有)含实例”是一个全面的Java学习资源,它涵盖了从入门到精通所需的所有知识点,并辅以实践案例,对于想要系统学习Java编程的个人来说是非常有价值的。学习者可以按照章节顺序逐步学习,...
Java语言基础教程是入门或重温Java编程的绝佳资源。它涵盖了从基本语法到核心概念的广泛内容,旨在帮助读者理解并掌握这门强大的面向对象编程语言。以下是一些关键知识点的详细阐述: 1. **Java简介**:Java是由Sun...
《Thinking in Java》是一本...通过阅读这本书,你可以从入门到精通,建立起坚实的Java编程基础,并逐步提升解决实际问题的能力。无论是想从事Java开发,还是对计算机科学有深入兴趣,这本书都是不可或缺的学习资料。