1 
2 /**
3  * Create some objects and store them into an instance field.
4  */
5 public class Main {
6     /**
7      * Entry point.
8      */
main(String[] args)9     public static void main(String[] args) {
10         Holder holder = new Holder();
11 
12         Blah blah = new Blah();
13 
14         /* strictly speaking, this should fail */
15         holder.mValue = blah;
16 
17         System.out.println("Assignment was allowed");
18 
19         /* try to use the reference; should fail */
20         try {
21             holder.mValue.run();
22             System.out.println("ERROR: did not get expected ICCE");
23         } catch (IncompatibleClassChangeError icce) {
24             System.out.println("Got expected IncompatibleClassChangeError");
25         }
26 
27         /* for fun, verify that it's the "alternate" type */
28         //Comparable cmpx = holder.mValue;      /* compiler rejects */
29         Comparable cmp = (Comparable) holder.mValue;
30         cmp.compareTo(cmp);
31 
32         System.out.println("Done");
33     }
34 }
35