@Retention : RetentionPolicy. SOURCE,CLASS,RUNTIME
@Target :ElementType.TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE
@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.FIELD)
public @interface In {
/**
* 范围
*
* @return
*/
String scope();
/**
* 值
*
* @return
*/
String value();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
public @interface UserInfo {
String name();
String age();
}
@UserInfo(name = "sefer", age = "27")
public class User {
@In(scope = "request", value = "hangzhou")
String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class GetUser {
public static void main(String[] args) {
AnnotatedElement an = User.class;
boolean isUserInfo = an.isAnnotationPresent(UserInfo.class);
if (isUserInfo) {
UserInfo userInfo = an.getAnnotation(UserInfo.class);
String name = userInfo.name();
String age = userInfo.age();
System.out.println("name: " + name);
System.out.println("age: " + age);
}
User user = new User();
Field[] fields = user.getClass().getDeclaredFields();
for (Field field : fields) {
// 重要:避免java虚拟机检查对私有成员的访问权限
field.setAccessible(true);
boolean isIn = field.isAnnotationPresent(In.class);
if (isIn) {
In in = field.getAnnotation(In.class);
System.out.println(field.getName() + "value: " + in.value());
System.out.println(field.getName() + " save scope: "
+ in.scope());
}
}
}
}
分享到:
相关推荐
以下是一个简单的自定义Annotation例子: ```java public @interface MyAnnotation { String value() default ""; } ``` 这里的`MyAnnotation`就是一个自定义注解,包含一个默认值为空字符串的`value`元素。你...
在这个"quartz_annotation"的例子中,我们将探讨如何利用注解(Annotation)的方式来配置和控制Quartz作业。 在传统的Quartz使用中,我们通常通过XML配置文件或者程序代码来定义Job类和Trigger,但随着Java EE和...
在这个小例子中,我们将深入探讨如何利用Struts2的Annotation配置来构建一个简单的应用。 首先,让我们了解什么是Annotation。在Java中,Annotation是一种元数据,它提供了一种安全的方式向编译器、JVM或者第三方...
在这个例子中,`MyAnnotation`是自定义注解,`MyClass`使用了这个注解。`AnnotationProcessor`是处理器,可以检查并处理带有`MyAnnotation`的类。 总结,Java注解为开发者提供了一种优雅的方式来添加元数据,简化了...
在这个例子中,我们首先检查传入的`annotation`是否是我们自定义的类型,然后创建或复用一个`MKAnnotationView`,并设置其`image`属性为我们准备的图片。`canShowCallout`属性为`true`时,可以显示Callout(气泡),...
在这个例子中,`@Retention(RetentionPolicy.RUNTIME)`表明`CustomAnnotation`将在运行时保留,因此我们可以在`main`方法中通过反射获取到该注解的信息。 最后,`Demo.java`可能包含使用上述注解的实际业务逻辑。...
在这个例子中,`User`类代表了`users`表,`id`是主键,`username`是表的一个列,`role`是与`Role`类的一对多关联。 **4. 注解的优势** - **简洁性**:注解使得ORM配置与实体类代码紧密集成,减少了XML配置文件的...
### 什么是Annotation? #### 一、Annotation的概念 在Java 1.5版本中引入了一个重要的新特性——**Annotation**(注解)。Annotation本质上是一种元数据(即关于数据的数据),它提供了一种机制来关联程序元素...
下面的例子展示了如何使用`@Override`注解: ```java public class CustomClass { @Override public String toString() { return "customObject"; } } ``` 如果`toString()`方法没有正确地重写了父类的...
在Java开发中,`AnnotationProcessor` 是一个强大的工具,它允许开发者在编译期间自动...在`AnnotationProcessorDemo`这个例子中,你可以学习到如何创建并使用一个简单的注解处理器,从而更好地理解和应用这一技术。
总结来说,这个 "Spring Hibernate Annotation demo" 展示了如何在 Spring 框架中使用注解配置来管理依赖,以及如何利用 Hibernate 的注解进行数据持久化。同时,它还涉及到了 Flex 前端与后端的交互。通过学习这个 ...
在本示例"struts annotation Hello World"中,我们关注的是Struts框架与注解(Annotation)的结合使用。注解是一种元数据,它提供了在代码中嵌入元信息的方式,使得框架能够自动生成配置,简化开发过程。 首先,让...
这个例子定义了一个名为`MyAnnotation`的注解,它将在运行时可用,并且可以应用于方法。 ## 四、注解处理器 注解处理器是在编译时自动执行的工具,可以用来生成额外的源代码或进行其他编译时检查。`javax....
在这个简单的使用例子中,我们将深入探讨如何使用`AnnotationMetadata`来解析类上的注解,这对于理解Spring的组件扫描和自动配置机制至关重要。 首先,`AnnotationMetadata`接口位于`org.springframework.core.type...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了一种安全的方法来将信息附加到代码中,而不改变代码的行为。注解处理器则是注解系统的关键组成部分,它们在编译期间运行,可以分析源代码中的注解并自动...
在这个例子中,`MyAnnotation`有一个默认值为空字符串的`value`元素。注解可以包含零个或多个元素,每个元素都有类型和可选的默认值。 接下来,我们可以在类、方法或其他元素上使用这个注解: ```java @...
Struts2的“零配置”特性是Struts2的新功能,可能会出现一些小Bug,所以企业开发者请慎重使用该特性, ...如果用的是Annotation的Struts2,就要将struts.xml去掉,否则即使将struts.xml中的内容注销,也会报错;
Android注解(Annotation)是Java语言的一个特性,它在Android开发中被广泛应用,尤其是在简化代码、提高可维护性以及提供元数据等方面起到了重要作用。在这个"最简单的android annotation demo"中,我们将深入理解...