问题
我的数据传输对象有许多访问者,可以返回不同类型的值,例如Integer
,Double
,String
等。
对象是从解析文本初始化的,其中正在解析的文本中的Integer
字段也可能具有值“INVALID”。该类的用户(另一个模块中的开发人员)应该知道他们获得的值是否有效而不必捕获异常。
我在考虑什么
public class FooDto
{
private Integer a;
private Double b;
private Long c;
public FooDto(String rawText)
{
// Initialize members from rawText...
}
public Integer getA()
{
return a;
}
boolean isAValid()
{
boolean isValid = // determine validity
return isValid;
}
public Double getB()
{
return b;
}
public boolean isBValid()
{
boolean isValid = // determine validity
return isValid;
}
}
问题
我应该使用IntegerWithValidityCheck
,DoubleWithValidityCheck
等最佳做法或图书馆吗?要清楚,这与返回null不同。返回值可以为null - 如果文本文件中不存在该值,则为有效值或“INVALID”的特定情况。
答案 0 :(得分:1)
在我看来,你有两个选择:
最简单的方法就是为特殊情况抛出异常。我会想象价值不存在的情况会适合吗?
创建一个从每个方法返回的新泛型类。它可以有isInvalid()
方法,指示该值是否标记为“INVALID”。如果用户仍然调用getValue()
,尽管被告知它无效,请抛出异常。