Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在包含lambda表达式的字段上出现ConstraintValidator问题_Java_Lambda_Annotations_Java 8_Hibernate Validator - Fatal编程技术网

Java 在包含lambda表达式的字段上出现ConstraintValidator问题

Java 在包含lambda表达式的字段上出现ConstraintValidator问题,java,lambda,annotations,java-8,hibernate-validator,Java,Lambda,Annotations,Java 8,Hibernate Validator,我试图在包含lambda表达式的类字段的输出上实现简单的数据验证。使用以下方法进行验证: 自定义批注: import javax.validation.Constraint; 导入javax.validation.Payload; 导入java.lang.annotation.*; @记录 @目标(ElementType.FIELD) @保留(RetentionPolicy.RUNTIME) @约束(validatedBy=MandatoryValidation.class) public@in

我试图在包含lambda表达式的类字段的输出上实现简单的数据验证。使用以下方法进行验证:

自定义批注:
import javax.validation.Constraint;
导入javax.validation.Payload;
导入java.lang.annotation.*;
@记录
@目标(ElementType.FIELD)
@保留(RetentionPolicy.RUNTIME)
@约束(validatedBy=MandatoryValidation.class)
public@interface必填项{
布尔值()默认为true;
字符串消息()默认值“必须提供值”;
类[]组()默认值{};

班级好吧,这是我迄今为止犯下的最愚蠢的错误之一。 主要错误:测试类中使用的供应商类型为java.util.function.Supplier,而自定义验证器中使用的供应商类型为com.google.common.base.Supplier,因此存在明显的编译错误。第二个主要错误是我没有在问题中包括完整的导入,因为我认为它们会使pos膨胀t、 那结果是个愚蠢的决定


TLDR:把导入搞砸了,使用了错误的类型,完全忽略了显式编译错误,就stackoverflow向我的白痴寻求帮助。

@Constraint
自定义注释吗?它的定义是什么?它是javax.validation注释(1.1.0.Final版本).完整错误是什么?您使用哪个JDK进行编译?
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MandatoryValidation.class)
public @interface Mandatory {

    boolean value() default true;

    String message() default "A value must be supplied";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import com.google.common.base.Supplier;


public class MandatoryValidation implements ConstraintValidator<Mandatory, Supplier<String>> {

    private boolean mandatory;

    @Override
    public void initialize(Mandatory mandatory) {
        this.mandatory = mandatory.value();
    }

    @Override
    public boolean isValid(Supplier<String> supplier, ConstraintValidatorContext constraintValidatorContext) {

        if (mandatory && supplier.get() == null) {
            return false;
        } else {
            return true;
        }

    }

}
import java.util.function.Supplier;

public class SampleClass {

    private SampleGenerator generator;

    @Mandatory
    public Supplier<String> lambdaField = () -> generator.next();

}