[英]How to handle null check in generic way in Java?
我必须检查null条件是否有太多方法。 我该如何以通用方式而不是重复相同的步骤呢?还是可以写?
这是我的代码:
<Student>
<Name></Name>
<RollNumber></RollNumber>
</Student>
如果用户为Name或RollNumber字段提供空值,则应该抛出异常。 我已经在下面编写了代码。 这可以正常工作,但我需要为这两种情况编写通用方法,并且应该与以下相同,
if(student.getName() == null) {
System.out.println("Name is required to create Student Data");
}
if(student.getRollNumber() == null) {
System.out.println("RollNumber is required to create Student Data");
}
注意:名称是字符串,而RollNumber是整数
你能给我一个IDEA吗?
这个问题可能已经在这里有了答案:避免在Java中使用“!= null”语句? 44个答案
我的问题是“我不想避免使用null语句。如果用户提供null值,我们如何以通用方式引发异常?”
如果您的Student bean总是要求非空值,那么如何在构造函数中使用非空值构造Student对象。 当您在构造函数中进行验证时,只要使用该对象,就不需要这样做
public class Student
{
private String name;
private String rollNumber;
public Student(String name, String rollNumber)
{
setName(name);
setRollNumber(rollNumber);
}
public String getName()
{
return name;
}
public String getRollNumber()
{
return rollNumber;
}
public String setName(String name)
{
if(isNull(name))
{
throw new NullPointerException("Name is required to create Student Data");
}
this.name= name;
}
public String setRollNumber(String rollNumber)
{
if(isNull(rollNumber))
{
throw new NullPointerException("Roll Number is required to create Student Data");
}
this.rollNumber = rollNumber
}
private void isNull(String str)
{
if(str == null || str.trim().isEmpty())
return true;
return false;
}
}
您可能应该看看Hibernate Validation 。 然后,您可以简单地使用@NotNull
注释bean的字段。
另外,您还可以处理其他验证。
您可以使用Apache Commons String Utils API,该API定义对String的安全为空的操作。
您可以执行以下操作:
if (StringUtils.isEmpty(student.getName()) { //this check for both empty String and null and prevents null pointer exceptions
System.out.println("Name is required to create Student Data");
}
除了仅对字符串进行空值比较外, Assertions
是处理nulls
好方法,您可以在此处查看更多信息。 确保将-ea
参数传递给JVM,因为默认情况下它会忽略Assertions
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.