// casts public class a { void f(i ii) { boolean b; b = <error descr="Inconvertible types; cannot cast 'int' to 'a'">2 instanceof a</error>; b = <error descr="Inconvertible types; cannot cast 'null' to 'int'">null instanceof int</error>; b = <error descr="Inconvertible types; cannot cast 'c3' to 'java.lang.Boolean'">(c3)null instanceof Boolean</error>; b = ii instanceof i; b = ((c2)ii) instanceof c4; b = null instanceof a; b = ii instanceof c3; b = Boolean.valueOf("true") instanceof Boolean; b = new Long(3) instanceof Number; b = this instanceof a; b = ii instanceof a; b = this instanceof i; // casts c2 c2i = null; c3 c3i = null; c4 c4i = null; Object o; c4i = <error descr="Inconvertible types; cannot cast 'a' to 'c4'">(c4) this</error>; o = <error descr="Inconvertible types; cannot cast 'c2' to 'boolean'">(boolean) c2i</error>; o = <error descr="Inconvertible types; cannot cast 'c3' to 'java.lang.Integer'">(Integer) c3i</error>; o = <error descr="Inconvertible types; cannot cast 'c2' to 'a'">(a) c2i</error>; o = <error descr="Inconvertible types; cannot cast 'c3' to 'int'">(int) c3i</error>; o = (a) ii; o = (i) c4i; //cast to interface o = (c3) c2i; o = (c3) c3i; o = (c3) c4i; o = (Object) ii; o = (iunrelated) ii; o = (iunrelated) c2i; o = (c4) c2i; o = (c4) ii; o = <error descr="Inconvertible types; cannot cast 'i' to 'c5'">(c5) ii</error>; int[] ai = null; o = <error descr="Inconvertible types; cannot cast 'int[]' to 'byte[]'">(byte[])ai</error>; o = <error descr="Inconvertible types; cannot cast 'int[]' to 'double[]'">(double[])ai</error>; c3[] ac3i = null; o = ac3i; o = (c4[])ac3i; o = (i[])ac3i; Object[] results = null; int index = (<error descr="Inconvertible types; cannot cast 'java.lang.Object[]' to 'java.lang.Integer'">(Integer) results</error>).intValue(); // arrays and Serializable/Cloneable/Object int[] ai2 = (int[])o; Cloneable cloneable = null; ai2 = (int[]) cloneable; java.io.Serializable serializable = null; ai2 = (int[]) serializable; } } interface iunrelated {} interface i {} class c2 implements i { public c2() {} public void f() {} protected void g() {} } class c3 extends c2 { protected c3() {} private int g(int k) { return 0; } } final class c4 extends c3 { private c4() { int[] a=new int[3]; Cloneable s=a; java.io.Serializable ss = a; } } final class c5 {} // clashing interfaces interface A { void g(); } interface B { int g(); } interface BB extends B { } class Foo { void f(A a) { B b = <error descr="Inconvertible types; cannot cast 'A' to 'B'">(B) a</error>; BB b2 = <error descr="Inconvertible types; cannot cast 'A' to 'BB'">(BB) a</error>; A a2 = <error descr="Inconvertible types; cannot cast 'BB' to 'A'">(A) b2</error>; } }