質問

私は周りに他の方法をlongしていないためにintから行くのトラブルを抱えてここやGoogleの人々の両方を見つけておきます。しかし、私は私がintLongから行く前に、このシナリオに遭遇しただけではないんだと確信しています。

私が見つけた唯一の他の回答は本当に問題に対処していない「ちょうど最初の場所でロングとして設定」してます。

私が最初にキャストしてみましたが、私は「Cannot cast from int to Long」を取得

for (int i = 0; i < myArrayList.size(); ++i ) {
    content = new Content();
    content.setDescription(myArrayList.get(i));
    content.setSequence((Long) i);
    session.save(content);
}
あなたは、私は少し困惑してる想像できるように、一部のコンテンツがintとして来ていると私はこの情報を保存していたために実体がロングとしてシーケンス番号を必要とするため、

、私はArrayListを使用してこだわっています。

役に立ちましたか?

解決

longするキャストとLongへのキャストとの間に差があることに注意してください。あなたは(プリミティブ値)をlongにキャストした場合、それは自動的にLong(それをラップ参照型)に箱詰めされなければならない。

あなたは、代わりnew値で初期化、Longのインスタンスを作成するためにintを使用することができます。

他のヒント

次を使用します。 Long.valueOf(int); でます。

:あなたはすでにintは整数として入力した場合は、

あなたはこれを行うことができます

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

タグ
使用
new Long(your_integer);

または

Long.valueOf(your_integer);

私はまた、非ジェネリックインターフェイスを扱うこの小さなおもちゃを、持っています。 私は(OKと幸せ)間違ったフィードあれば、それはClassCastExceptionが投げてOKです。

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}

Javaでは、あなたが行うことができます:

 int myInt=4;
 Long myLong= new Long(myInt);

あなたのケースでは、それは次のようになります:

content.setSequence(new Long(i));

私たちはNumberの参照を使用してlong値を取得するものとします。

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

}

どのように

について
int myInt = 88;

//コンパイルされません。

Long myLong = myInt;

//コンパイルし、int型の非NULLの精神を維持しています。最高ののキャストのすべてのの一切のキャストのではありません。もちろん、あなたのユースケースは、ロングと可能なNULL値が必要な場合があります。 int型、または他の憧れるがあなただけの入力で、あなたの方法を変更することができるなら、私はこのアプローチをお勧めします。

long myLong = myInt;

//コンパイルは、最も効率的な方法であり、それは明確に、ソース値であり、NULLになることはありませんということになります。

Long myLong = (long) myInt;
 1,new Long(intValue);
 2,Long.valueOf(intValue);

私はこれとのトラブルの多くを持っていました。

:私はしたかったです
thisBill.IntervalCount = jPaidCountSpinner.getValue();

どこIntervalCountが長く、JSpinnerのは、ロングを返すように設定しました。結局私は、この関数を記述する必要がありました。

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

これはトリックを行うようです。シンプルな鋳造のいかなる量は、上記の解決策のどれも私のために働いていません。非常にイライラます。

 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)

とすぐ唯一の方法のLong.valueOf(long)があるとして、intlongからキャストはLong.valueOf(intValue)を使用した場合には暗黙的に行われます。

これを行うために、より明確な方法がある。

Integer.valueOf(intValue).longValue()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top