Java 如何使用反射获取关联字段的值
我正在实现一个自定义约束验证注释Java 如何使用反射获取关联字段的值,java,reflection,Java,Reflection,我正在实现一个自定义约束验证注释@validation,以验证annotatedField。我需要知道someField的值,以满足验证逻辑 class A { private String someField; @validation private String annotatedField; } 验证程序实现ConstraintValidator{ @凌驾 公共void初始化(验证约束旋转){ } @凌驾 公共布尔值有效(字符串注释字段、约束验证数据或上
@validation
,以验证annotatedField
。我需要知道someField
的值,以满足验证逻辑
class A {
private String someField;
@validation
private String annotatedField;
}
验证程序实现ConstraintValidator{
@凌驾
公共void初始化(验证约束旋转){
}
@凌驾
公共布尔值有效(字符串注释字段、约束验证数据或上下文上下文){
if(StringUtils.isBlank(annotatedField)){
返回true;
}
String someField;//在给定带注释的字段时获取一些someField值
}
}
有没有一种方法可以通过反射来实现这一点?
建议使用类级约束注释来解决此问题。
建议使用类级约束注释来解决此问题。给定一个对象,可以反射地确定字段的值。关于如何做到这一点,现有的资源很多。或者你的问题是关于别的什么?是的,使用反射很容易知道
someField
的值;到目前为止,您尝试了什么,出了什么问题?例如,您最好使用前面提到的类级约束来解决此问题。@tddiaz类级约束恐怕不是一个简单的解决方案或解决方法,而是由javax.validation
design提供的解决方案。当验证器目标是属性时,框架中没有允许您访问拥有属性的对象的功能。另请参见。请注意,根据Java惯例,您确实应该将验证
重命名为验证
。给定一个对象,您可以反射地确定字段的值。关于如何做到这一点,现有的资源很多。或者你的问题是关于别的什么?是的,使用反射很容易知道someField
的值;到目前为止,您尝试了什么,出了什么问题?例如,您最好使用前面提到的类级约束来解决此问题。@tddiaz类级约束恐怕不是一个简单的解决方案或解决方法,而是由javax.validation
design提供的解决方案。当验证器目标是属性时,框架中没有允许您访问拥有属性的对象的功能。另请参见。请注意,根据Java惯例,您应该将验证
重命名为验证
。
Validator implements ConstraintValidator<validation, String>{
@Override
public void initialize(validation constraintAnnotation) {
}
@Override
public boolean isValid(String annotatedField, ConstraintValidatorContext context) {
if (StringUtils.isBlank(annotatedField)) {
return true;
}
String someField; // get some someField value given the annotatedField
}
}