$8
Scope and lifetime are distinct yet related issues in programming languages. Languages can sometimes make design decisions that cause a conflict between the scope and the lifetime of variables. Java's decision to allow classes to be defined inside a method illustrates this conflict. Consider the following example: class AnonymousInnerClassInMethod { public static void main(String[] args) { int local = 1; Comparable compare = new Comparable () { public int compareTo(Object value) { return (Integer)value - local; } }; System.out.println(compare.compareTo(5)); } } Why does this code fail to compile in Java 7? Why does it compile in Java 8? What could it be modified so it would compile for Java 7?