getter是否应该在java中进行验证(例如。检查某些内容是否为null)?或者他们应该简单地得到任何想要得到的回报声明。对我而言,这就是我通常的做法。
public class GetterDemo
{
private String name;
private int age;
public GetterDemo(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
}
现在假设构造函数有一个来自名为hobbies的类的爱好数组。
public class Hobbies
{
private String hobby;
private String category;
public Hobbies(String hobby, String category)
{
this.hobby = hobby;
this.category = category;
}
public String getHobby()
{
return this.hobby;
}
public String getCategory()
{
return this.category;
}
}
现在,让我们在构造函数中更新GetterDemo的版本,其中包含一系列爱好,如上所述。并且它有一个下一个方法来在每次调用时获取数组中的下一个爱好。
public class GetterDemo
{
private String name;
private int age;
private int count = 0;
private Hobbies[] hobbies;
public GetterDemo(String name, int age, Hobbies[] hobbies)
{
this.name = name;
this.age = age;
this.hobbies = hobbies
}
public Hobbies getNextHobby()
{
//Create a counter.
Hobbies result;
if (this.hobbies == null || this.hobbies.length == 0
|| this.count >= this.hobbies.length) //Called more then length times.
return null;
result = this.hobbies[count];
count++;
return result;
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public void reset()
{
this.count = 0;
}
}
好的,这就是一个小代码示例。可能有错误,可能很多,因为我空白编码。 在测试null(JUnit测试)方面进行解释。如果我调用getNextHobby()爱好长度或更长时间它将返回null并且我可以AssertNull()并且它将通过。但是,例如,如果我执行AssertNull,其中业余爱好数组为Null并且我尝试使用getNextHobby.getCategory(),它将抛出NullPointerException,即使我希望它为null。修复此问题的唯一方法是创建一个检查此方法的方法吗?或以某种方式检查null的getter?可能是下面的代码?
public boolean checkNull()
{
boolean result = false;
if (getNextHobby().getCategory() == null || getNextHobby().getHobby())
result = true;
return result;
}
答案 0 :(得分:1)
我认为这是一个品味问题。
我更喜欢setter和getter只做他们想做的事情,这意味着设置某些值或获取某些值。我的理由如下: