2

我想创建一个扩展,java.text.Format但我不知道如何处理该Format.parseObject方法。javadoc 状态

从给定字符串的开头解析文本以生成对象。该方法可能不会使用给定字符串的整个文本。

那么如果你想实现这个方法,你如何处理可以解析整个输入字符串的情况呢?您是抛出异常还是返回解析值(或其他内容)?请注意,异常的 javadoc 声明 aParseException被抛出

如果无法解析指定字符串的开头。

IMO,如果我可以解析整个String,我当然可以解析开头,所以没有理由抛出异常。查看JDK中这个方法的实现,他们似乎不尊重自己的文档

public Object parseObject(String source) throws ParseException {
    ParsePosition pos = new ParsePosition(0);
    Object result = parseObject(source, pos);
    if (pos.index == 0) {
        throw new ParseException("Format.parseObject(String) failed",
            pos.errorIndex);
    }
    return result;
}
4

1 回答 1

2

“该方法可能不会使用给定字符串的整个文本。”

您应该将此解释为“可能会或可能不会......”

顺便说一句 - java 中已经有一堆内置的格式化程序。除了用于数字的 NumberFormat 和 DecimalFormat 之外,我最喜欢的一个(大概 10 年没用过 - 只是没有理由使用它)是java.text.MessageFormat. 去看看,看看它是否满足您的需求

于 2012-05-04T20:15:44.007 回答