gpt4 book ai didi

java - 为什么 shortValue() 方法是具体的,而 intValue() 是抽象到 java.lang.Number 中的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:36 24 4
gpt4 key购买 nike

我已经阅读了java.lang.Number 的源代码,我想知道为什么

  1. intValue()
  2. longValue()
  3. 浮点值()
  4. doubleValue()

是抽象的但是

  1. 短值()
  2. byteValue()

混凝土。

源代码:

public abstract class Number implements java.io.Serializable {

public abstract int intValue();

public abstract long longValue();

public abstract float floatValue();

public abstract double doubleValue();

public byte byteValue() {
return (byte)intValue();
}

public short shortValue() {
return (short)intValue();
}

private static final long serialVersionUID = -8742448824652078965L;
}

为什么 java 创始人要这样做?

我看不出这些方法有什么大的不同。它似乎相关。

附言

来自长类:

  public byte byteValue() {
return (byte)value;
}


public short shortValue() {
return (short)value;
}


public int intValue() {
return (int)value;
}


public long longValue() {
return (long)value;
}


public float floatValue() {
return (float)value;
}


public double doubleValue() {
return (double)value;
}

来自整数类

public byte byteValue() {
return (byte)value;
}


public short shortValue() {
return (short)value;
}


public int intValue() {
return value;
}


public long longValue() {
return (long)value;
}


public float floatValue() {
return (float)value;
}

public double doubleValue() {
return (double)value;
}

因此我们看到了很多相同的代码。我认为 copy paste 开发很糟糕,但我认为 Java 创始人有理由这样做。

最佳答案

根据documentation of the Number class ,方法byteValueshortValue是在JDK1.1中最先添加的。这与第一个 JDK 版本中已经可用的其他“值”方法不同。我的假设是,将这两个方法具体化是为了保持与 Number 的现有(也是非标准)子类的兼容性,否则它们会因在父类(super class)中添加新的抽象方法而被破坏.

关于java - 为什么 shortValue() 方法是具体的,而 intValue() 是抽象到 java.lang.Number 中的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22527959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com