| |
| /** |
| * Create some objects and store them into an instance field. |
| */ |
| public class Main { |
| /** |
| * Entry point. |
| */ |
| public static void main(String[] args) { |
| Holder holder = new Holder(); |
| |
| Blah blah = new Blah(); |
| |
| /* strictly speaking, this should fail */ |
| holder.mValue = blah; |
| |
| System.out.println("Assignment was allowed"); |
| |
| /* try to use the reference; should fail */ |
| try { |
| holder.mValue.run(); |
| System.err.println("ERROR: did not get expected ICCE"); |
| } catch (IncompatibleClassChangeError icce) { |
| System.out.println("Got expected IncompatibleClassChangeError"); |
| } |
| |
| /* for fun, verify that it's the "alternate" type */ |
| //Comparable cmpx = holder.mValue; /* compiler rejects */ |
| Comparable cmp = (Comparable) holder.mValue; |
| cmp.compareTo(cmp); |
| |
| System.out.println("Done"); |
| } |
| } |