gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:20:16 27 4
gpt4 key购买 nike

我一直在研究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. 它是为某些特殊情况制作的,但我不明白为什么。

附言 2

我的java版本-1.7.0_45-b18

附言 3仅供引用:

整数:

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

:

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

ByteCharacter 也一样。 (这些都不是点对点的。)

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

最佳答案

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

观察单一的代码风格。

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

结论:开发者并未关注这方面。

附言这只是我的假设。

关于java - 为什么 java.lang.Long 的 .longValue() 将其 (long) 实例值转换为 long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22528675/

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