- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一个有 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 中有许多实现。例如,参见 SmartValidator和 LocalValidatorFactoryBean
@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/
我正在使用 IntelliJ 13.1.5 和 Java 8 SDK,我已经设置了 IntelliJ 内置的空性检查器以使用 checkers.nullness.quals.NonNull 作为我选择
Lombok's @NonNull VS javax.annotation.Nonnull 哪个更适合用于方法参数以及何时使用? The answer here模糊地比较了所有注释,但无法推断出哪一个
这两个注解有什么区别? org.jetbrains.annotations.NonNull android.support.annotation.NonNull kotlin 编译器 IntelliJ
这是我的数据代码: import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.Primary
Java 允许将参数和返回标记为 @Nonnull。 对我来说,这感觉是一种不好的做法,我不想在 99% 的用例中告诉它它不应该为 null 并用无用的噪音污染代码。 相反,我更愿意告诉它 - 给定包
我要安装Pushe plugin对于 flutter ,但我遇到了这个错误: 我什至将这一行添加到 native 导入中: 导入 android.support.annotation.NonNull;
我想我会更深入地研究旧的 Java 功能,例如注释。我遇到了 Java 8 类型注释,它使我们能够扩展 Java 类型系统。IntelliJ 注释库或 Checkerframework 中最常见的注释
我的 Controller 中有以下方法: @PostMapping("/register") public String registerNewUser(@Valid User user,
我是 @Nonnull 注释的新手。 我尝试使用它并编写了以下测试: public class TestNonull{ public static void doSmth(@Nonnull I
我不明白 NonNull 注释应该如何提供帮助。所以,假设我有这个: void noNullArg(@NonNull Object o) { // stuff } 如果我这样做,我会收到一条关
我的类的一个 String 成员变量是 Optional。用 Lombok 注释 @NonNull 标记它是否有意义? 如果成员变量是Map而不是String,我想问同样的问题。答案会改变吗? 最佳答
我正在使用 org.eclipse.jdt.annotation.NonNull 为静态空值分析添加额外信息。我不知道如何正确注释数组: 我怎么能说数组引用是非空的? 我怎么能说数组由非空元素组成?
虽然我认为应该有一个关于是否继承注释的通用规则,但我特别感兴趣的是让 FindBugs 识别我的规则,所以这个问题是 FindBugs 特定的。 据我所知,JavaDoc 注释取自接口(interfa
我的问题是 this one 的后续问题。 . 在过去的 FindBugs 版本中,可以使用 @DefaultAnnotation(Nonnull.class) 或 @DefaultAnnotatio
@nonnull inflater 错误,谁能解决这个错误?我是 android 的新手,我不知道如何解决这个错误的任何解决方案?是主题错误还是其他原因,我的代码有什么大问题吗??你能解决这个错误吗?
这个问题在这里已经有了答案: Non-nullable string type, how to use with Asp.Net Core options (1 个回答) 2年前关闭。 我有一个在 E
我知道使用方法nonnull和 nullable是 nonnull: the value won’t be nil; bridges to a regular reference. nullable:
我在这段代码上遇到了这个错误。 You must annotate primary keys with @NonNull. "uidString" is nullable.当我用@NonNull 和@
这个问题在这里已经有了答案: Meaning of Android Studio error: Not annotated parameter overrides @NonNull paramete
我想在我的应用程序中使用 FindBugs 来检测空指针故障,我关心的是代码 public class Test { public static void main(String[] args
我是一名优秀的程序员,十分优秀!