gpt4 book ai didi

java - 也使用@NonNull 来检查类成员

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:14 25 4
gpt4 key购买 nike

假设我有一个有 3 名成员的类(class):

Class A {
private String string1; /** Cannot be null */
private String string2; /** Cannot be null */
private String string3; /** Can be null */
}

我有 2 个方法接受此类的对象作为参数。其中一种方法需要检查是否存在不可为空的字段,而在另一种方法中,这无关紧要:

public int func1(A object); /** Check non nullable fields */
public int func2(A object); /** No check required */

有什么干净的方法吗?使用@NonNull 注释或其他东西?

我尝试了各种方法,但都没有用。所有 NonNull 仅帮助确保 setter 不会将 null 作为参数。或者对象本身不为空。

我似乎找不到对对象执行这种递归空检查的东西。

如果你们中有人能提供帮助,那就太好了。 :)

最佳答案

你需要一个 bean Validator ,一个用于检查 bean 是否正常的类。在 Spring 中有许多实现。例如,参见 SmartValidatorLocalValidatorFactoryBean

@valid注释是一种自动调用 validator 的好方法。当您使用 Spring 时,您可以避免手动创建 validator 。它仅在该方法被 Spring(或任何等效容器)调用时才有效。您可能会在 BindingResult 中获得验证结果目的。例如:

@RequestMapping(value = "/MyPath", method = RequestMethod.POST)
public String postCostForm(Model model, @Valid MyForm myForm, BindingResult result){
if(result.hasErrors()){
for(ObjectError error : result.getAllErrors()){
// Do something
}
return "/error";
}else{
return "/success";
}
}

验证非常强大,有时也很复杂。您可以创建多组验证并只检查其中的一组。您可以创建自定义约束标记,可以调用验证方法,还可以自定义和国际化验证失败时返回的消息。

关于java - 也使用@NonNull 来检查类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com