型キャスト
最初に
Groovy 1.8.1 がリリースされました。
前回 Grape について書いたばかりですがデフォルトでローカルの Maven リポジトリが参照されるようになりました。
Maven リポジトリを参照する設定を追加しただけならもう設定ファイルは削除してもいいです。
2種類のキャストの優先順位
次のコードでは括弧と as の優先度が低い方の型が出力されるはず。
((long) 1 as int).class
しかし、思っていた評価順と違っていた。
Java では
型キャストは優先順位が高いので先に行われる
public class Main { public static void main(String[] args) { System.out.println((int)1.9 + 1.2); // 2.2 } }
Groovy では
Groovy イン・アクションの演算子の優先順位を参照すると Java と同じはずだが...
groovy:000> (int)1.9+1.2 ===> 3
最初に評価したいときは括弧で最後に評価したいときは as だと思っていたのに as より後にキャストされてる*1。
groovy:000> ((long) 1 as int).class ===> class java.lang.Long
検索してみたら Hit した。バグっぽい。
*1:1.8.1、1.9.1-beta で確認