About Question enthuware.ocpjp.ii.v11.2.1360 :
Posted: Fri Nov 20, 2020 12:15 pm
The answer is wrong: a local class cannot extend any class. The correct answer is "None of the above".
If a local class extends an inner class inside a static context, then a compilation error is due (a local class in a static context cannot reference non-statitc members of its enclosing class).
The following code will generate a compilation error at Line 0:
public class DummyClass {
class DummyInnerClass{}
static void staticMethod(){
class DummyLocalClass extends DummyInnerClass{} //Line 0
}
}
P.S.:The Java Language Specification states that "A local class is a nested class", and "All local classes are inner classes".
Reference: https://docs.oracle.com/javase/specs/jl ... l#jls-14.3
Furthermore, the specifications also states that "An inner class is a nested class that is not explicitly or implicitly declared static".
Reference: https://docs.oracle.com/javase/specs/jl ... #jls-8.1.3
Meaning that a local class fits the criteria as a "non-static nested class".
If a local class extends an inner class inside a static context, then a compilation error is due (a local class in a static context cannot reference non-statitc members of its enclosing class).
The following code will generate a compilation error at Line 0:
public class DummyClass {
class DummyInnerClass{}
static void staticMethod(){
class DummyLocalClass extends DummyInnerClass{} //Line 0
}
}
P.S.:The Java Language Specification states that "A local class is a nested class", and "All local classes are inner classes".
Reference: https://docs.oracle.com/javase/specs/jl ... l#jls-14.3
Furthermore, the specifications also states that "An inner class is a nested class that is not explicitly or implicitly declared static".
Reference: https://docs.oracle.com/javase/specs/jl ... #jls-8.1.3
Meaning that a local class fits the criteria as a "non-static nested class".