Java反射机制总结(实例分析)(二)

简介:

  long long ago,写过一篇反射机制总结一,后来一直没有续写,今天续写一下反射机制的第二篇总结:

利用反射操作Annotation。因为上一篇已经涵盖了反射的所有入门知识,所以这篇不做过多叙述。如果需要从头学起,

建议看看我的上一篇随笔Java反射机制总结(实例分析)(一)

上代码:自定义注释类

复制代码
package  com.sy.annotation;

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

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public  @ interface  MyAnnotation {

    String p() 
default   " shiyang " ;
    String p2();
}
复制代码

 

使用注释的类:

复制代码
package  com.sy.annotation;

public   class  MyTest {

    @MyAnnotation(p2
= " haha " )
    
public   void  output() {
        System.out.println(
" output something " );
    }

}
复制代码

 

反射读取注释的类:

 

复制代码
package  com.sy.reflection;

import  java.lang.annotation.Annotation;
import  java.lang.reflect.Method;

import  com.sy.annotation.MyAnnotation;
import  com.sy.annotation.MyTest;

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 p
= myAnnotation.p();
            String p2
= myAnnotation.p2();
            
            System.out.println(p
+ " , " + p2);
        }
        
        Annotation[] annotations
= method.getAnnotations();
        
for  (Annotation annotation : annotations) {
            System.out.println(annotation.annotationType().getName());
        }
    }
}
复制代码

 

代码很简洁,抛砖引玉。


本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2009/02/17/1392622.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
51
分享
相关文章
理解的Java中SPI机制
本文深入解析了JDK提供的Java SPI(Service Provider Interface)机制,这是一种基于接口编程、策略模式与配置文件组合实现的动态加载机制,核心在于解耦。文章通过具体示例介绍了SPI的使用方法,包括定义接口、创建配置文件及加载实现类的过程,并分析了其原理与优缺点。SPI适用于框架扩展或替换场景,如JDBC驱动加载、SLF4J日志实现等,但存在加载效率低和线程安全问题。
理解的Java中SPI机制
Java 中 .length 的使用方法:深入理解 Java 数据结构中的长度获取机制
本文深入解析了 Java 中 `.length` 的使用方法及其在不同数据结构中的应用。对于数组,通过 `.length` 属性获取元素数量;字符串则使用 `.length()` 方法计算字符数;集合类如 `ArrayList` 采用 `.size()` 方法统计元素个数。此外,基本数据类型和包装类不支持长度属性。掌握这些区别,有助于开发者避免常见错误,提升代码质量。
31 1
|
1月前
|
Java静态代码块深度剖析:机制、特性与最佳实践
在Java中,静态代码块(或称静态初始化块)是指类中定义的一个或多个`static { ... }`结构。其主要功能在于初始化类级别的数据,例如静态变量的初始化或执行仅需运行一次的初始化逻辑。
61 4
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
83 15
Java字面量详解:概念、分类与使用实例
本文介绍了Java字面量的概念、分类及应用。
85 11
反射-----浅解析(Java)
在java中,我们可以通过反射机制,知道任何一个类的成员变量(成员属性)和成员方法,也可以堆任何一个对象,调用这个对象的任何属性和方法,更进一步我们还可以修改部分信息和。
深入探索Java中的异常处理机制##
本文将带你深入了解Java语言中的异常处理机制,包括异常的分类、异常的捕获与处理、自定义异常的创建以及最佳实践。通过具体实例和代码演示,帮助你更好地理解和运用Java中的异常处理,提高程序的健壮性和可维护性。 ##
94 2
深入理解Java异常处理机制
Java的异常处理是编程中的一块基石,它不仅保障了代码的健壮性,还提升了程序的可读性和可维护性。本文将深入浅出地探讨Java异常处理的核心概念、分类、处理策略以及最佳实践,旨在帮助读者建立正确的异常处理观念,提升编程效率和质量。
165 1
|
4月前
|
深入理解Java中的异常处理机制
本文探讨了Java编程语言中异常处理的核心概念,包括异常类型、异常捕获与抛出、以及最佳实践。通过分析常见的异常场景和处理策略,旨在帮助开发者更好地理解和运用异常处理机制,提高代码的健壮性和可维护性。文章不仅涵盖了基本的try-catch结构,还深入讨论了自定义异常的创建与使用,以及finally块的重要性和应用。此外,还将介绍一些高级技巧,如多异常捕获和嵌套异常处理,为读者提供全面的技术指导。
145 0
java的反射与注解
java的反射与注解
44 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等