在Java中如何从int转换为Long?

在Java中如何从int转换为Long?,java,casting,int,long-integer,Java,Casting,Int,Long Integer,我一直在这里和谷歌上发现人们从long到int都有麻烦,而不是相反。但我确信,在从int到Long之前,我不是唯一遇到这种情况的人 我发现的唯一其他答案是“一开始就把它设置得一样长”,但实际上并没有解决这个问题 我最初试过施放,但得到一个“无法从int施放到Long” for(int i=0;i

我一直在这里和谷歌上发现人们从
long
int
都有麻烦,而不是相反。但我确信,在从
int
Long
之前,我不是唯一遇到这种情况的人

我发现的唯一其他答案是“一开始就把它设置得一样长”,但实际上并没有解决这个问题

我最初试过施放,但得到一个“
无法从int施放到Long

for(int i=0;i

你可以想象,我有点困惑,我一直在使用
int
,因为有些内容是以
ArrayList
的形式出现的,而我存储这些信息的实体要求序列号为Long。

请注意,转换为
Long
和转换为
Long
之间有区别。如果强制转换为
long
(基本值),则应将其自动装箱为
long
(包装它的引用类型)


您也可以使用
new
创建
Long
的实例,并使用
int
值对其进行初始化。

使用以下命令:。

如果您已经将int类型化为整数,则可以执行此操作:

Integer y = 1;
long x = y.longValue();

我在这方面遇到了很多麻烦。我只是想:

thisBill.IntervalCount = jPaidCountSpinner.getValue();
其中IntervalCount是Long,JSpinner被设置为返回Long。最终我不得不编写这个函数:

    public static final Long getLong(Object obj) throws IllegalArgumentException {
    Long rv;

    if((obj.getClass() == Integer.class) || (obj.getClass() == Long.class) || (obj.getClass() == Double.class)) {
        rv = Long.parseLong(obj.toString());
    }
    else if((obj.getClass() == int.class) || (obj.getClass() == long.class) || (obj.getClass() == double.class)) {
        rv = (Long) obj;
    }
    else if(obj.getClass() == String.class) {
        rv = Long.parseLong(obj.toString());
    }
    else {
        throw new IllegalArgumentException("getLong: type " + obj.getClass() + " = \"" + obj.toString() + "\" unaccounted for");
    }

    return rv;
}

这似乎起到了作用。没有多少简单的铸造,上述解决方案都不适合我。非常令人沮丧。

我有一个小玩具,它也处理非通用接口。 如果feed错误,我可以抛出一个ClassCastException(OK和happy)

在Java中,您可以执行以下操作:

 int myInt=4;
 Long myLong= new Long(myInt);
在您的情况下,它将是:

content.setSequence(new Long(i));

我们将使用
Number
reference获得长值

public static long toLong(Number number){
    return number.longValue();
}
它适用于所有数字类型,下面是一个测试:

public static void testToLong() throws Exception {
    assertEquals(0l, toLong(0));   // an int
    assertEquals(0l, toLong((short)0)); // a short
    assertEquals(0l, toLong(0l)); // a long
    assertEquals(0l, toLong((long) 0)); // another long
    assertEquals(0l, toLong(0.0f));  // a float
    assertEquals(0l, toLong(0.0));  // a double

}
使用

new Long(your_integer);

怎么样

int myInt = 88;
//不会编译

Long myLong = myInt;
//编译并保留int的非空精神。最好的强制转换是完全不强制转换。当然,您的用例可能需要很长的空值。但是如果int或其他long是您唯一的输入,并且您的方法可以修改,我建议使用这种方法

long myLong = myInt;
//编译,这是最有效的方法,并清楚地表明源值是且永远不会为NULL

Long myLong = (long) myInt;

只要只有方法
Long.valueOf(Long)
,在使用
Long.valueOf(intValue)
的情况下,将隐式地从
int
转换到
Long

更明确的方法是

Integer.valueOf(intValue).longValue()

Android Studio lint check建议:删除不必要的装箱:因此,取消装箱是:

public  static  long  integerToLong (int minute ){
    int delay = minute*1000;
    long diff = (long) delay;
    return  diff ; 
}

为了演示Earwicker所说的,您可以调用Long.valueOf(i),它需要一个Long,但会加宽一个int并返回一个Long对象。自动装箱更可取,因为它不一定每次都要创建一个新的
Long
对象。(警告:此注释的其余部分是猜测和猜测)如果Long.valueOf()的值介于0和128之间(这是非常常见的),并且它返回一个缓存实例,那么这会比自动装箱更可取吗?(如果你认为值得的话,我可能会问一个新问题……)自动装箱也有同样的作用。顺便说一句,它在-127和128之间。@Grundlefleck:Autoboxing使用
Long.valueOf()
(如果我没记错的话),所以不会有任何区别。我的评论是对答案的回应,而不是对你的评论。for(long i=0;iint转换为
long
,然后将
long
分配给
long
。e、 g
intx=2;长y=(长)x注意,如果您接收到的整数对象为null,这将生成NullPointerException。如果是正确的,我认为答案可能是旧的,因为我找不到方法
Long.valueOf(int)
@will824-基元“int”变量不能为null。@shareef-请参阅serg的注释-但我认为此方法将int强制转换为long,而autobox则使用long。。。因此似乎是多余的Java中没有这样的方法,如果
jPaidCountSpinner.getValue()
返回一个实际上是
Long
的对象,您肯定只需要在前面放置一个
(Long)
强制转换。还可以尝试在检查
int.class
long.class
等时设置一个断点。它曾经命中过吗?如果您有一个类似数字的对象,它将支持
java.util.number
,因此将其转换为该对象并调用
longValue
方法。在这种情况下,不需要通过字符串。所以这个函数可以简化很多,即使你也需要处理字符串。(这里的部分问题是
JSpinner
的糟糕参考文档)。我也做了类似的事情。我不确定我会收到什么样的数字,并愿意将其转换为Long,而不考虑效率,但希望避免使用样板文件。
longValue
只是一个
(Long)
,所以这里唯一“获得”的是
Integer
的内部缓存。是的。只需
(long)intValue
如何?
Long myLong = (long) myInt;
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
Integer.valueOf(intValue).longValue()
 1,new Long(intValue);
 2,Long.valueOf(intValue);
public  static  long  integerToLong (int minute ){
    int delay = minute*1000;
    long diff = (long) delay;
    return  diff ; 
}