これは、JavaデザイナーがCとC++のブーリアン/整数オーバーロードが重大なエラーの原因であることを正しく認識しているため、許可されません。
は(私はいくつかの設計上の根拠に書面でそれを見て思い出すが、私はそれを見つけることができません。)例えば
:
if (i = 0) {
...
}
は合法ですが、おそらくバグというそのアプリケーションにCまたはC++で書かれています。
Javaは、boolean
と整数データ型を別の型に変換できないようにすることで、この問題やその他の問題を回避します。したがって、上記はJavaのコンパイルエラーです。
明示的タイプはint
にboolean
をキャストすることはできませんなぜ今、これは説明しません。しかし、私はそれが次のことを観察することによって理解することができると思う:
あなたはまれ実際のJavaプログラムであることを行う必要があります。
数字< - >ブール型キャストは、他の型キャストが動作する方法ではジェルしません。特に、他のタイプの場合、アップキャストとダウンキャストがあり、アップストリームキャストは、明示的な型キャストを必要としません。
数字と文字列の間、または文字列と文字列の間には、他のオブジェクトを型変換することはできません。これらは、タイプキャストではなく、の変換です。そしてint
< - >boolean
もあります。
1 - 私はここに(故意に)私の用語にずさんされています。正しいJava用語は、「拡大」と「縮小」です。変換を狭めるには、リテラルの例外が限定された明示的な型キャストが必要です。拡大変換は型キャストを必要としません。
'int'は' boolean'ではないためです。 –
キャスティングのルールは何ですか?ゼロは偽です、それ以外は真ですか?負の数値はどのように扱われますか?あなたは数学をすることを許されますか? –
*「なぜJavaにはこの機能が含まれていないのですか?」* Javaには、単一のコード行で実現できる多くのことが含まれていません。私はその理由として「APIが肥大化する」と思います。 –