プロジェクトをJava 1.7から1.8にアップグレードしています。コードをコンパイルするとcompile error
としてintはキャストできません。です。intをJavaで長時間キャストできません。
ここにプリミティブlong
を返す式を示します。
public Long getOrganizationIdByUser(String userId){
Query query = getSession().getNamedQuery("getOrganizationIdByUser");
query.setString("id", userId!=null?_userId.toLowerCase():null);
List<Long> returnList = query.list();
return returnList!=null&&returnList.size()>0?returnList.get(0):0;
}
これは、Javaの基本的な概念であり、また、それは、Java 1.7で正常に動作しますので、は、Java 1.8でlongにキャストすることはできませんなぜ私が混乱してきました。
エラー
error: incompatible types: bad type in conditional expression
[javac] return returnList!=null&&returnList.size()>0?returnList.get(0):0;
[javac]
[javac] int cannot be converted to Long
「returnList」とは何ですか? (私はJava 1.8でこれを再現できません) –
オペランドの型に応じて、 '?:'演算子の戻り値の型に固有の規則があります。http://docs.oracle.com/javase/specs/ jls/se8/html/jls-15.html#jls-15.25。これに基づいて、ボクシングとアンボクシングはバックグラウンドで行われます。そして、私は、結果を代入する変数の型として 'Long'を使用したときにそれを再現できますが、' long'が機能します。ですから、問題を示すコードが同じになるように[mcve]を提供してください。 –
[Java 8 - 整数を長いコンパイルの問題に変換する]の可能な複製(http://stackoverflow.com/questions/27105299/java-8-converting-an-integer-to-a-long-compilation-issue) –