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

2022-09-01 17:50:30

我一直在研究类源代码。java.lang.Long

请考虑以下情况:

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

投给的原因是什么?longlong

在这种情况下,为什么不将其序列化(?)重新定性为Number类?

附言 1 源代码链接

我有这些可能的解释:

  1. 开发人员的粗心大意
  2. 符合一些统一的代码风格
  3. 它是为一些特殊情况制作的,但我不明白为什么。

附言 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

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

观察单一代码样式。

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

结论:开发者没有注意到这一方面。

附言这只是我的假设。


答案 2