1. 首先是自定义注解:
package cn.veji.hibernate.po;
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)
public @interface Privilege {
String[] value();
}
2.定义使用注解类:
package cn.veji.hibernate.po;
package cn.veji.hibernate.po;
public class TestPrivilege {
@Privilege( { "a" })
public void a() {
}
@Privilege( { "b" })
public void b() {
}
@Privilege( { "c" })
public void c() {
}
}
3.读取注解值帮助类:
package cn.veji.hibernate.po;
package cn.veji.hibernate.test;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import cn.veji.hibernate.po.Privilege;
import cn.veji.hibernate.po.TestPrivilege;
public class AnnotationUtil {
public static AnnotationUtil anno = null;
public static AnnotationUtil getInstance() {
if (anno == null) {
anno = new AnnotationUtil();
}
return anno;
}
/**
* 读取注解值
*
* @param annotationClasss 处理Annotation类名称
* @param annotationField 处理Annotation类属性名称
* @param className 处理Annotation的使用类名称
* @return
* @throws Exception
*/
@SuppressWarnings("all")
public Map<String, String> loadVlaue(Class annotationClasss,
String annotationField, String className) throws Exception {
System.out.println("处理Annotation类名称 === "+annotationClasss.getName());
System.out.println("处理Annotation类属性名称 === "+annotationField);
System.out.println("处理Annotation的调用类名称 === "+className);
Map<String, String> map = new HashMap<String, String>();
Method[] methods = Class.forName(className).getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(annotationClasss)) {
Annotation p = method.getAnnotation(annotationClasss);
Method m = p.getClass()
.getDeclaredMethod(annotationField, null);
String[] values = (String[]) m.invoke(p, null);
for (String key : values) {
System.out.println("注解值 === " + key);
map.put(key, key);
}
}
}
System.out.println("map数量 === " + map.size());
return map;
}
public static void main(String[] args) throws Exception {
AnnotationUtil.getInstance().loadVlaue(Privilege.class, "value",
TestPrivilege.class.getName());
}
}
4.执行结果:
处理Annotation类名称 === cn.veji.hibernate.po.Privilege
处理Annotation类属性名称 === value
处理Annotation的调用类名称 === cn.veji.hibernate.po.TestPrivilege
注解值 === c
注解值 === a
注解值 === b
map数量 === 3
分享到:
相关推荐
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
System.out.println("注解值:" + myAnnotation.value()); } else { System.out.println("字段上没有找到该注解"); } } } ``` 在上述代码中,我们首先获取`AnnotationDemo`类的`testField`字段,然后通过`...
在这个例子中,我们可以创建一个处理器来读取和打印带有`MyAnnotation`的类的注解值: ```java @SupportedAnnotationTypes("com.example.MyAnnotation") @SupportedSourceVersion(SourceVersion.RELEASE_8) public ...
3. **处理Annotation**:Java提供API来读取注解信息,例如`getAnnotations()`、`isAnnotationPresent()`等。此外,还可以使用Annotation Processing Tool (APT)在编译时处理注解,生成额外的源代码或类文件。 4. **...
在这个小demo中,主要展示了如何创建自定义注解、如何应用注解以及如何在运行时读取注解信息。这只是一个基础示例,实际场景中,你可以根据需求扩展注解的用途,比如添加更多的元素、实现更复杂的逻辑等。此外,还...
这个注解有两个主要部分:`@Target(ElementType.FIELD)`表示该注解只能应用于字段,`@Retention(RetentionPolicy.RUNTIME)`意味着注解会在运行时保留,这样我们可以在序列化或反序列化过程中读取到它。 接下来,...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了向编译器或JVM提供信息的方式,这些信息可以用于代码分析、编译时检查或者运行时处理。自定义注解允许开发者创建自己的注解类型,以满足特定项目需求。...
Java自定义注解是Java平台提供的一种元数据机制,它允许程序员在代码中添加额外的信息,这些信息可以被编译器、JVM或其他工具在编译时或运行时读取,用于实现各种功能,如代码生成、代码分析、依赖注入等。自定义...
首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取和处理。自定义注解允许我们创建自己的标记,用于特定目的,比如代码分析...
Java 自定义注解及利用反射读取注解的实例 Java 中的注解(Annotation)是一种元数据,用于提供有关程序元素的信息,而不影响程序的执行。Java 中提供了多种元注解,包括 @Target、@Retention、@Documented、@...
注解处理器是Java编译器的一部分,它们在编译期间读取注解并执行相应操作,例如生成代码、验证输入等。`javax.annotation.processing`包提供了处理注解所需的工具。 在实际应用中,Java注解广泛用于依赖注入(如...
通过上述示例中的JavaAnnotation压缩包,你可能包含了注解的使用示例、源码以及相关的博客文章。源码可以帮助你理解注解的实际应用,而博客文章可能深入解释了注解的工作原理和最佳实践。学习这些材料,将有助于你...
注解(Annotation)提供了一种元数据的形式,允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、JVM或者专门的处理工具在编译时或运行时读取和处理。注解在软件开发中主要应用于代码的自动生成、编译检查、...
2. **自定义 Annotation**:除了预定义的 Annotation,开发者还可以定义自己的 Annotation 类型,并通过注解处理器来处理这些 Annotation,实现特定的功能。 3. **运行时可见性**:有些 Annotation 在编译时有效,...
在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被编译器或运行时环境读取。Spring框架广泛使用了注解来简化配置,例如`@Autowired`、`@Component`、`@Configuration`...
### Spring Java注解、元注解与自定义注解详解 #### 一、Java注解简介 在深入了解Spring框架中的注解应用之前,我们首先需要对Java注解有一个基本的认识。Java注解(Annotation)是一种元数据,可以为程序代码添加...
在IT行业中,自定义注解(Annotation)是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,增强了代码的可读性和可维护性。这些元数据可以被编译器或运行时环境用来执行特定的任务,例如代码分析、...
2. 运行时处理:通过反射机制,可以在运行时读取注解信息,进行相应的处理。例如,Spring框架中的依赖注入就是通过注解实现的。 3. 编译器工具:注解可以作为编译器插件的输入,帮助生成代码或执行特定验证。 三、...