当前位置: 首页 > 知识库问答 >
问题:

在Java中检查两个参数,要么都不为空,要么都为空

冯皓
2023-03-14
sendmail -from foo@bar.com -password  foobar -subject "hello world"  -to aaa@bbb.com

我如何优雅地检查这个?

现在我的方式是

if ((from != null && password == null) || (from == null && password != null)) {
    throw new RuntimeException("from and password either both exist or both not exist");
}

共有1个答案

翟沈义
2023-03-14

有一种使用^(XOR)运算符的方法:

if (from == null ^ password == null) {
    // Use RuntimeException if you need to
    throw new IllegalArgumentException("message");
}

如果只有一个变量为null,if条件将为true。

但我认为通常使用两个if条件和不同的异常消息会更好。你不能用一个条件来定义哪里出了问题。

if ((from == null) && (password != null)) {
    throw new IllegalArgumentException("If from is null, password must be null");
}
if ((from != null) && (password == null)) {
    throw new IllegalArgumentException("If from is not null, password must not be null");
}
 类似资料:
  • 问题内容: 我需要了解我正在研究的项目的ELF文件布局,并且注意到这些工具的存在。为什么所有Linux发行版都同时包含readelf和objdump?这些工具相互补充吗?我何时更愿意使用一个? 问题答案: 来自binutils / readelf.c:

  • 当我转到<代码>/银行/1我看到了预期的账户信息。很好,很好。 当我转到<代码>/银行/1/description我看到了描述(好),但我也看到了帐户信息(不好)。 我习惯了Spring的,如果多个路径匹配,事情就会中断——但即便如此,AFAIK,在我的代码中,无论如何只有一个应该匹配? 银行。Java语言 帐户ction.java 日志输出:

  • 问题内容: 在大多数在线教程中,我们可以看到它们显示了GC中有两个幸存者空间。当我们实际上只有一个幸存者空间时,有什么需要?拥有两个幸存者空间会对性能产生什么影响? 问题答案: 原因是,您猜对了,性能。首先让我解释一下为什么还存在幸存者空间。关于 对象重定位 的基本考虑,有两种主要的垃圾收集器设计: 就地 压实 收集器; 一个 拷贝 收集器。 基本上,因为它永远不会覆盖任何对象,所以复制收集器可以

  • 问题内容: 似乎应该已经问过这个问题,但是搜索没有发现任何问题。 我一直想知道让我们将所有代码放入类或接口的意义何在。我似乎记得,要求像C这样的函数有一些优点,但对于类却没有。像Python这样的语言在某种程度上比Java更面向对象,因为它们没有基元,但是您可以将代码放在任何需要的地方。 这是对OOP的某种“误解”吗?毕竟,您可以像在C语言中一样编写过程代码,并将其放在类中,但是不会面向对象。 问

  • 假设我在程序中有一段代码: 有人建议我在调用消息之前检查消息的空值。getUserId()。 检查null有两种方法:第一种: 第二种方式: 我的问题是: 哪种方式对null检查更好?返回还是抛出异常? 为什么我们在这里需要空检查?如果我们不这样做,那么无论如何都会抛出。

  • 我创建了一个包含三个卷积层和两个完全连接层的卷积神经网络。我使用了tf。火车saver()保存变量。当我使用inspect\u checkpoint时。py检查保存在检查点文件中的变量。为什么每个层都保存了两个附加变量,如Adam\u 1和Adam?另外,什么是beta1\u电源和beta2\u电源?