package annotation;
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 UseCase
{
public int id();
public String description() default "no description";// 默认的描述
}
package annotation;
import java.util.List;
public class PasswordUtils
{
// 使用注解
@UseCase(id = 47, description = "passwords must contain at least one numeric")
public boolean validatePassword(String password)
{
return password.matches("\\w*\\d\\w*");
}
@UseCase(id = 47)
public String encryptPassword(String password)
{
return new StringBuilder(password).reverse().toString();
}
@UseCase(id = 47, description = "new passwords can't equal previously used ones")
public boolean checkForNewPassword(List<String> prevPasswords, String password)
{
return !prevPasswords.contains(password);
}
}
package annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//注解处理器
public class UseCaseTracker
{
public static void trackUseCases(java.util.List<Integer> useCases, Class<?> cl)
{
for (Method m : cl.getDeclaredMethods())
{
UseCase uc = m.getAnnotation(UseCase.class);
if (uc != null)
{
System.out.println("Found Use Case : " + uc.id() + " " + uc.description());
useCases.remove(new Integer(uc.id()));
}
}
for (int i : useCases)
{
System.out.println("warning : Missing use case -" + i);
}
}
public static void main(String[] args)
{
List<Integer> useCases = new ArrayList<Integer>();
Collections.addAll(useCases, 47, 48, 49, 50);
trackUseCases(useCases, PasswordUtils.class);
}
}
分享到:
相关推荐
总结,"jackson-annotations-2.2.3.jar.zip" 提供了Jackson注解库的2.2.3版本,这些注解是处理JSON数据时的强大工具,使得Java对象和JSON之间的转换变得更加简单和灵活。结合其他Jackson模块,开发者可以构建出高效...
1. 创建实体类:利用@Entity、@Table、@Id等注解创建符合数据库结构的Java实体类。 2. 数据库操作:使用Session的save()、update()、delete()方法进行CRUD操作,或者使用Criteria、HQL等查询语言进行复杂查询。 3. ...
8. **时间戳注解**:@Temporal和@CreationTimestamp、@UpdateTimestamp可以自动管理记录的创建和更新时间。 9. **转换器注解**:@Converter和@AttributeConverter用于自定义类型转换,将Java对象转化为数据库可存储...
在实际开发中,`annotations-api.jar`通常与Maven或Gradle等构建工具一起使用,以确保编译时注解的正确处理。`rt.jar`则是Java运行环境的标准配置,无需开发者特别关注。而`servlet-api.jar`在开发基于Java的Web应用...
- 处理日期和时间:`@JsonFormat`注解可以定制日期和时间的序列化格式,也可以使用`JavaTimeModule`处理Java 8的日期时间API。 - 集合和Map的处理:Jackson可以自动处理List、Set、Map等集合类型,也可以自定义转换...
而Hibernate Annotations则是Hibernate框架的重要组成部分,它使得我们可以在实体类上直接使用注解进行对象关系映射,避免了XML配置文件的繁琐。本文将深入探讨Hibernate 3.3.2和Hibernate Annotations 3.4.0的核心...
2. **创建注解的Pojo类**:接着,定义一个Java类,并使用JSoup-Annotations的注解来标注字段。比如,如果你要解析一个包含标题、作者和内容的博客文章,可以创建如下类: ```java public class BlogPost { @Id(...
- **src/main/java**:这是主要的源代码目录,包含了注解定义和使用这些注解的类。 - **src/main/resources**:可能包含配置文件或其他资源。 - **src/test/java**:测试代码存放的地方,包括对源码生成器功能的...
开源性质使得这两个工具都可以自由使用和定制,为开发者提供了强大的功能和灵活性。通过学习和应用这些工具,开发者可以更高效地处理解析任务,同时也能便捷地在Confluence中管理和分享项目文档。
《详解Java注解(Annotations)及其在10.0.2版本中的应用》 ...`annotations-10.0.2.jar`作为注解库,为开发者提供了更多的注解选择和功能支持,正确理解和使用这些注解,能有效提升开发效率和代码质量。
本篇将深入探讨Hibernate3中的注解功能以及与Commons Annotations的结合使用,旨在帮助开发者更好地理解和应用这些技术。 首先,让我们来看看核心组件`hibernate3.jar`。这个JAR文件包含了Hibernate3框架的基础组件...
而Java配置则使用`@EnableCaching`注解开启缓存支持,并通过`CacheManager`和`Cache`注解来配置具体的Ehcache实例。 总结来说,`cglib-2.2.jar`和`ehcache-spring-annotations-1.1.2.jar`这两个库在Spring应用中...
本篇将详细探讨`hibernate-annotations-3.4.0.GA`和`hibernate-entitymanager-3.4.0.GA`这两个版本中的核心知识点,尤其是它们在注释和枚举映射方面的应用。 首先,`hibernate-annotations`是Hibernate提供的一套...
总的来说,Jackson-Annotations库极大地简化了JSON在Java应用中的使用,通过注解的方式避免了大量手动转换代码,提高了代码的可读性和维护性。在现代Java Web应用、RESTful服务或者任何需要处理JSON数据的场景中,...
`hibernate-annotations-3.4.0.GA`中的API文档是开发者理解和使用Hibernate注解的重要资源。它详细列举了所有可用的注解、接口、类及其方法,提供了详细的参数说明和使用示例。通过查阅API,开发者可以快速定位所需...
在本文中,我们将深入探讨Laravel...通过合理使用注解,开发者可以创建出结构清晰、易于理解和扩展的应用程序。如果你正在使用Laravel 5.1或更高版本,强烈建议尝试使用路由注解,它将为你的开发工作带来极大的便利。
三、实体类和注解的使用 1. @Entity:标记一个类为数据库表的实体,对应数据库中的一个表。 2. @Table:定义实体所对应的数据库表名,以及表的其他元数据,如schema和catalog。 3. @Id:标识实体的主键字段,可以...
例如,你可以使用`@dataclass`或`@attr.s`装饰器来创建数据类,并直接在类属性上使用如`int`,`str`,`List[str]`等类型注解,这样marshmallow-annotations会自动为你生成序列化和反序列化的方法。这种特性使得代码...
在下面的代码中,我们创建了一个名为`UserController`的类,它同时被`@Controller`和`@RemoteProxy`注解标记: ```java package com.myapp.web.controller; import javax.servlet.http.HttpServletRequest; import...