この代入可能性は,代入可能性についてのコンパイル時規則の再帰的な適用によって決定する。クラスの規定については8.を,インタフェースについては9.を,配列については10.を参照のこと。次のテストプログラムは,参照値についての代入変換を例示するが,注釈で記述するとおり,これは,優先順位規則に違反しているためにコンパイルに失敗する。この例を一つ前の例と比較することが望ましい。Colorable}}配列オブジェクトの代入を含む例をもう一つ次に示す。error}}この例では,LongはObject以外のクラス型だから,veclongの値をLongの変数に代入することはできない。配列は,互換性のある配列型の変数又は型Objectの変数にだけ代入できる。veclongの値は,プリミティブ型の配列であって,short及びlongは同じプリミティブ型ではないから,vecshortには代入できない。型ColoredPointの式の値となることが可能な任意の参照は,型Pointの変数の値となることが可能だから,cpvecの値はpvecに代入できる。それに続く,新たなPointのpvecの構成要素への代入は,(このプログラムをコンパイルできるように別途修正したとしても,)例外ArrayStoreExceptionを投げる。その理由は,配列ColoredPointは,構成要素の値として型Pointのインスタンスをもつことができないからとなる。型ColoredPointの式の値となることが可能な参照が必ずしもすべて型Pointの変数の正しい値であるとは限らないから,pvecの値は,cpvecに代入できない。pvecの実行時の値がPoint[]のインスタンスへの参照であって,cpvecへの代入が許されていれば,cpvecの構成要素への単純参照,例えばcpvec[0]はPointを返すことができるが,PointはColoredPointではない。したがって,そのような代入を許すことは,型システムの破壊を許すことになる。pvecがColoredPoint[]を参照するのを保証するために,キャストを使用することができる(5.5,15.16)。メソッド又はコンストラクタの呼出し(15.9,15.12)の各実引数値に適用する。実引数式の型は,対応する仮引数の型に変換しなければならない。(5.1.4)を可能とする。要素ならば,実装はその値を最も近いfloat値集合の要素に対応させなければならない。この変換によってオーバフロー,アンダフローが発生することがある。要素ならば,実装はその値に最も近いdouble値集合に対応させなければならない。この変換によってオーバフロー,アンダフローが発生することがある。メソッド呼出し変換は,代入変換(5.2)の一部となる暗黙の整数定数の縮小変換を含まない。Javaの設計者達は,このような暗黙の縮小変換がオーバロードされたメソッドの照合解決過程(15.12.2)を複雑なものとするためと考えたからである。次の例はコンパイル時にエラーを引き起こす。error}}これは変数リテラル12及び2は,型intを持つのでいずれのメソッドmも(15.12.2)の規則のもとでは一致しないからである。整数定数の暗黙縮小を含む言語では,この例のような場合を解決する追加規則を必要とする。オペランドにだけ適用する。(15.18.1)の記述で詳細に規定する。キャスト演算子(15.16)のオペランドに適用する。このときオペランド式の型は,キャスト演算子で明示的に名前を与えた型に変換しなければならない。キャストの文脈では,恒等変換(5.1.1),プリミティブ型の拡大変換(5.1.2),プリミティブ型の縮小変換(5.1.3),参照型の拡大変換(5.1.4),又は,参照型の縮小変換(5.1.5)の利用を可能とする。従って,キャスト変換は,代入変換又は,メソッド呼出し変換よりも包括的とする。キャストは文字列変換以外の任意の変換が許される。値集合変換(5.1.8)は,型変換の後に適用される。コンパイル時に不正と証明されるキャストもある。このようなキャストは,コンパイル時エラーを発生させる。プリミティブ型の値は,型が同じならば恒等変換によって,そうでないときにはプリミティブ型の拡大変換又はプリミティブ型の縮小変換によって,他のプリミティブ型にキャストできる。プリミティブ型の値を,キャスト変換によって参照型にキャストすることはできないし,参照型の値をプリミティブ型にキャストすることもできない。残りの場合は,参照型間の変換に関係する。(変換先)へのキャスト変換のコンパイル時正当性検査に関する詳細規則は次のとおりとする。下位クラスでなければならない。ないときには,コンパイル時エラーが発生する。インタフェース型のとき。下位クラスが実装しているかもしれないからである)。実装しなければならない。なければ,コンパイル時エラーが発生する。なければ,コンパイル時エラーが発生する。インタフェース型の場合。実装しなければならない。なければ,コンパイル時エラーが発生する。下位クラスが実装しているかもしれないからである)。(8.4.2)で、異なる返却値の型を持つメソッド含むならば,コンパイル時エラーが発生する。SCを構成要素に持つ配列の場合。配列を代入できる唯一のクラス型であるからである)。なければ,コンパイル時エラーが発生する。構成要素に持つ配列ならば,次のうち一つが真でないとき,コンパイル時エラーが発生する。