ADT4J实现了Algebraic Data Types,支持@GenerateValueClassForVisitor注解。ADT4J为每一个@GenerateValueClassForVisitor 注解构造一个新的类,允许你简单定义一个常用数据类型。
定义数据类型示例:
// Define Expression data type
@GenerateValueClassForVisitor
@Visitor(resultVariableName="R", selfReferenceVariableName="E")
interface ExpressionVisitor {
@GeneratePredicate(name = "isLiteral");
R lit(int i);
R sum(@Getter(name = "leftOperand") E e1, @Getter(name = "rightOperand") E e2);
R mul(@Getter(name = "leftOperand") E e1, @Getter(name = "rightOperand") E e2);
}
功能特性
- 支持递归数据类型
- 生成的hashCode、equals和toString实现值语义
- 额外的注解生成 predicates、getters和“updaters”
- 完全定制化的API:为生成的方法定制名称和访问级别
- 尽可能在编译和类型检查时进行Comparable实现
- 尽可能在编译和类型检查时实现类的序列化
- 敏感的错误信息
- 通过标准的Java扩展支持生成类继承
- 执行快速
安装配置
通过maven依赖使用ADT4J。
com.github.sviperll
adt4j
3.0.2
你可以使用adt4j-shaded手工简化依赖来避免依赖冲突。adt4j-shaded没有依赖并且也不会破坏类途径。所有Java包都由adt4j-shaded提供,并且根目录在com.github.sviperll.adt4j。
开发资源
- 教程
- ADt4J与Java 7兼容:参看universal-maven-parent项目文档说明如何构建工程师如何与java 7兼容。