- ベストアンサー
キャスト時に使う括弧について
クラスAはBを継承しているとします。 そこで、bにはクラスAのインスタンスがるとして、 キャストするときは、 String str = ((A)b).getString(); のようにするかと思いますが、 String str = (((A))b).getString(); のように不要に括弧を書いて、コンパイルがエラーになる場合というか、 エラーになるコンパイラのバージョンがあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Object o = new String(); String s = (((String))o).substring(0,1); を1.4.2_12でコンパイルしたところ、エラーになりました。 -------------------------------------------------- hoge.java:11: ')' がありません。 String s = (((String))o).substring(0,1); ^ エラー 1 個 -------------------------------------------------- 「^」は「o」のとこにあります。
その他の回答 (1)
- bgbg
- ベストアンサー率53% (94/175)
実はキャストは演算子です。 "(型名)"で一つの演算子という扱いになります。(+や*と同じ扱い) 演算子だけを括弧で括っても式を評価できないので、"((型名))"はコンパイルエラーになります。 1 + 1 を 1 (+) 1 と表記してコンパイルエラーになるのと同じ理屈です。
お礼
エラーにならないjavaのバージョンがあるようです。 今私が使用している1.3だと思うのですが、それではエラーになってくれません。 ありがとうございます!
お礼
ウェブスフィアーではエラーになってくれないのはなぜでしょうか? javaのバージョンによるんでしょうか? 1.4.2_12はダメなんですね。 ありがとうございます!
補足
私も試してみましたが、私のPCにはjava1.4.1_02が入っているので、 エラーになりませんでした。 質問時に試した環境は1.3でした。