你好,我想知道是否有一个较短的版本来检查ProfileTo的任何字段是否为空。
在互联网上搜索时,我只发现了关于如何检查某个字段是否为空或所有字段是否都为空的问题,这是完全不同的。
对于上下文:如果为空,则应使用用户对象的相应字段(这只是对数据库的调用)。如果不是空白,则应采用ProfileTo字段
private void setEmptyFieldsForUpdatedUser(User user, ProfileDto profileDto) {
String newFirstName = profileDto.getFirstName();
String newLastName = profileDto.getLastName();
String newEmailAdres = profileDto.getEmail();
if (newFirstName == null) {
profileDto.setFirstName(user.getFirstName());
}
if (newLastName == null) {
profileDto.setLastName(user.getLastName());
}
if (newEmailAdres == null) {
profileDto.setEmail(user.getEmail());
}
}
这个ProfileDto给出了一个json对象。它可以有空值。如果它是空的,我想设置我的数据库中的前一个用户字段的值。我的数据库用户具有以下属性:
firstname: dj
lastname : test
email : dj@mail.com
输入示例:
{
"firstName": "freeman",
"lastName": null,
"email": null
}
我的输出应该是:
{
"firstName": "freeman",
"lastName": test,
"email": dj@mail.com
}
显然,我们可以看到,如果我还有 20 个变量,我需要很多 if,所以我想知道是否有更好的方法。
谢谢!
我想如果不使用反射(这不是很优雅),就不可能检查任何字段是否为空。
为了使您的代码更短、更具可读性,我建议您使用Objects.requireNullElse()
:
profileDto.setFirstName(Objects.requireNonNullElse(profileDto.getFirstName(), user.getFirstName()));
可能的解决方案包括反射。这样,您只需迭代即可检查所有字段。但是,此解决方案要求两个类具有相同的字段名称,或者至少 DTO 中的字段名称存在于用户类中
User user = new User();
user.setFirstName("dj");
user.setLastName("test");
user.setEmail("dj@mail.com");
ProfileDto dto = new ProfileDto();
dto.setFirstName("test");
System.out.println(user);
System.out.println(dto);
System.out.println();
for (Field f : dto.getClass().getDeclaredFields()) {
if (f.get(dto) == null)
f.set(dto, user.getClass().getDeclaredField(f.getName()).get(user));
}
System.out.println(user);
System.out.println(dto);
您可以使用三元表达式,只需在一行中完成所有操作。(StringUtils类来自apache公共资源)
String newFirstName = StringUtils.isBlank(profileDto.getFirstName()) ? user.getFirstName() : profileDto.getFirstName();
String newLastName = StringUtils.isBlank(profileDto.getLastName()) ? user.getLastName() : profileDto.getLastName();
String newEmailAdres = StringUtils.isBlank(profileDto.getEmail()) ? user.getEmail() : profileDto.getEmail();
问题内容: 我想在Swing中检查用户名和密码。 该检查适用于用户名,但不适用于JPaswordfield。我正在发布相关代码: 问题答案: 非常简单地获取文本,使用该文本返回文本的a,然后简单地获取数组的长度并检查它是否等于0:
问题内容: 结果集没有hasNext的方法。我想检查resultSet是否有任何值 这是正确的方法吗 问题答案: 没错,最初的光标指向第一行之前,如果第一次调用,则没有数据。 如果使用此方法,则由于它现在已定位在第一行之后,因此可能必须在复位后立即调用。 但是,应该注意的是,塞弗(Seifer)在下面的回答是对该问题的更优雅的解决方案。
问题内容: 我知道那里有大量的堆栈溢出页面来解释如何执行此操作,但是每次我从此处获取代码并将其放入时,我都会遇到相同的错误,并且该错误是“字符串”的值?没有成员“文本”的任何可靠方法都可以用于检查文本字段是否快速为空? 问题答案: 这个帖子给出了一个很好的答案(很遗憾,它没有“接受”的标记)。使用。 假设您的声明为: 您可以使用以下方法检查其空度: 要在您编辑的帖子中使用变量: 要么:
我想检查一个对象的所有字段是否为null,或者是否使用Java 8。尝试了这里提到的不同方法,但我希望使用Java 8特性来完成。 例如: 我只想在id和name不为NULL时将person添加到列表中。因为这个人有10多个字段,所以我不想对每个字段进行空检查并添加到列表中。在这里,我从DB操作的ResultSet设置这些字段。
问题内容: 好的,所以我有一个庞大的条目列表,并且在其中一列中(为简单起见,我们将其称为 num, 其中有一个数字,例如(它们的长度和格式都相同),但是有时有些字段看起来像这 现在,我需要删除 num 列不完全为数字的所有行。 num 的类型是 TEXT ,而不是 INTEGER 。因此,上述示例应删除,而不应删除。 我尝试了两种解决方案,其中一种有效,但笨拙且混乱,而另一种则根本不起作用。 我尝
问题内容: 我很惊讶地发现这种情况总是成立的: 似乎无论最初是什么类型,它都将转换为相应类的实例。是否存在确定对象是否可靠的方法? 问题答案: 更新 我在下面显示的代码被报告在发行版本中不起作用。(请参阅下面的Paul Cantrell的评论。) 对于我的“据我测试”的道歉过于有限。 当我找到关于此的更多信息时,我将更新此答案。 我不确定我们是否可以在下一个Beta(或GM或已发布的版本…)中看到
问题内容: 我试图弄清楚如何检查一个字段是否为空或为空。我有这个 我需要添加额外的支票,例如 任何想法如何做到这一点? 问题答案: 无论使用 要么 如果只想检查而不是空字符串,则也可以使用或。但这不适用于空字符串。
问题内容: 我正在下面的代码中检查和文本字段中是否有任何输入。 当我按下按钮时,该语句没有执行任何操作。 问题答案: 仅将textfield 对象 与空字符串进行比较不是解决此问题的正确方法。您必须比较文本字段的属性,因为它是兼容类型并且包含您要查找的信息。 Swift 2.0: 守卫 : 如果 : Swift 3.0: 守卫 : 如果 :