为什么java.lang.Long的.longValue()将其(长)实例值强制转换为long?

时间:2014-03-20 09:33:16

标签: java numbers long-integer

我一直在调查java.lang.Long类源代码。

考虑一下:

public final class Long extends Number implements Comparable<Long> {
      ....
      private final long value;    
      ....
      public long longValue() {
            return (long)value;
      }
      ....
}

long投放到long的原因是什么?

为什么不在这种情况下 reralize 序列化(?)到Number类?

P.S.1 source code link

我有这些可能的解释:

  1. 开发人员的疏忽
  2. 遵守一些统一的代码风格
  3. 这是为某些特殊情况而制作的,但我不明白为什么。
  4. P.S.2

    我的java版本 - 1.7.0_45-b18

    P.S.3 仅供参考:

    Integer

    public final class Integer extends Number implements Comparable<Integer> {
              ....
              private final int value;    
              ....
              public int intValue() {
                return value;
              }    
              ....
    }
    

    Short

    public final class Short extends Number implements Comparable<Short> {
                ....
                private final short value;    
                ....
                public short shortValue() {
                    return value;
                }
                ....
    }
    

    ByteCharacter也是如此。 (这些都不像是喜欢的。)

    这是一个问题,还是可能只是被遗忘?

1 个答案:

答案 0 :(得分:4)

我假设代码是针对相关方法统一的吗?

观察单一的代码风格。

 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;
    }

但我注意到在java 1.6(至少1.6_0_45)Integer

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

但在java 1.7中为Integer

public int intValue() {
            return value;
}

结论:开发人员没有注意到这方面的问题。

<强> P.S。 这只是我的假设。