Java惯用语或图表的返回值和返回值有效性?

时间:2013-06-11 14:50:29

标签: java return return-value dto

问题

我的数据传输对象有许多访问者,可以返回不同类型的值,例如IntegerDoubleString等。

对象是从解析文本初始化的,其中正在解析的文本中的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;
    }
}

问题

我应该使用IntegerWithValidityCheckDoubleWithValidityCheck等最佳做法或图书馆吗?要清楚,这与返回null不同。返回值可以为null - 如果文本文件中不存在该值,则为有效值或“INVALID”的特定情况。

1 个答案:

答案 0 :(得分:1)

在我看来,你有两个选择:

  1. 最简单的方法就是为特殊情况抛出异常。我会想象价值不存在的情况会适合吗?

  2. 创建一个从每个方法返回的新泛型类。它可以有isInvalid()方法,指示该值是否标记为“INVALID”。如果用户仍然调用getValue(),尽管被告知它无效,请抛出异常。