为什么Java有这么多解析方法?

时间:2015-07-17 08:00:58

标签: java method-overriding parameterized-types

例如,Math.max(.. ..)方法被重载以支持不同类型的数字。所有这些名称的一个名称,因为没有其他类型的数字,它做同样的事情。
为每个扩展 Number 的类定义的解析 NumberType 方法也是如此。

为什么会这样?如果参数化的解析方法在Number(和Number of course,参数化)中定义,那就不会更好了,如:     public abstract T parse( String s );(后来在Number的所有子类中专门实现)

3 个答案:

答案 0 :(得分:2)

Math.max的各种版本都有原始参数,而不是Numbers(对象)。您建议的每次调用方法时都需要装箱/拆箱操作,这不会像当前设计那样有效。

答案 1 :(得分:2)

从JDK 1.0开始,

Number存在,Generics仅在Java 1.5中引入。因此,这种通用的解析方法是不可能的。

关于Math.max,它只接受基本类型,它们之间没有任何形式的关系,每个基本类型需要单独声明才能被支持。

答案 2 :(得分:0)

解析实例方法毫无意义。您必须在解析之前构造不可变值。