【发布时间】:2019-09-19 23:21:30
【问题描述】:
我正在尝试使用 Java 验证约束(@NonNull、@Min 等)改进和简化我的部分代码,但在我的代码中有一个反复出现的情况,我无法弄清楚如何使用约束注释。
这是一个例子:
public class ResourceIdentifier {
public enum ResourceType { ARTICLE, USER, COMMENT }
private @Getter @Setter String id;
private @Getter @Setter ResourceType type;
}
然后我想验证 MyCommand 对象,所以 resourceId 不为空,resourceId.type 只能是 ARTICLE 或 COMMENT。
public class MyCommand {
@NotNull
@Validate(path="#resourceId.type", values={ResourceIdentifier.ResourceType.ARTICLE, ResourceIdentifier.ResourceType.COMMENT})
private ResourceIdentifier resourceId;
(...)
}
我相信我可以通过自定义约束验证注释和反射来实现这一点。
还有其他简单的方法吗?
编辑:假设我有 10-20 个其他命令类需要类型相同的验证 resourceId.type = {}
【问题讨论】:
-
这是lombok 还是其他框架?你可能想这样标记它。
-
你没有提到你得到了什么错误或你的程序有什么其他问题。但是这些值不应该是实际的枚举吗?
ResourceIdentifier.ResourceType.ARTICLE等? -
好点@RealSkeptic。我更新了问题。我没有任何错误,我只是想知道实现
@Validate注释的最有效方法是什么。
标签: java validation enums