-1

この質問への回答 (リンク: How do I convert from int to Long in Java? ) を見て、次を使用して long 値 (newUpdate、lastUpdate) と int 値 (Interval) を比較しました。

if ((newUpdate - lastUpdate) > Long.valueOf(interval))

コンパイルできません。2 つの異なるタイプを比較する正しい方法は何ですか?

より詳しい情報:

[INFO] Trace org.apache.maven.BuildFailureException: Compilation failure [145,51] operator > cannot be applied to long,java.lang.Long

Interval のタイプはintです。

4

2 に答える 2

3

intervalが の場合int、単に ...

    if ((newUpdate - lastUpdate) > interval) { ...

このコンテキストで明示的intervalに aに変換する正当な理由はありません。longとにかく、変換はあなたのために行われます。

式はではなくをLong.valueOf(Interval)返します。明示的に に変換する必要がある場合は、次のようにキャストする必要があります。java.lang.Longlongintervallong

    if ((newUpdate - lastUpdate) > ((long) interval)) {

あなたの例について私を困惑させる唯一のことは、 alongと a を比較するときにコンパイルエラーが発生する理由ですLong。は自動アンボックス化され、,バージョンの演算子を使用するLong 必要があります。参照JLS - 15.20.1には、必要に応じて数値関係演算子がアンボックス化を実行することが記載されています。唯一の説明は、1.4 以前のソース レベルでコンパイルしているということです。longlong>

于 2012-12-03T14:20:54.910 に答える
0

Long.valueOf(Interval)ラッパー オブジェクトを返すLongため、>演算子は適用されません。

IntervalString 型の場合はLong.valueOf(Interval).longValue()、比較で使用します。

タイプの場合Intervalは、比較に使用してください。--> specsに自動昇格されます。intIntervallong

于 2012-12-03T14:18:54.550 に答える