[英]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.