What is the difference between these two innerclass declarations? Also comment on advantages/disadvantages?
case A: class within a class.
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
and case B: class within interface.
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Made correction: to placement of getvalue method.
further info: I am able to instantiate Items class in both cases A and B in another class that does not implement interface AT ALL.
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
Since an interface is not instantiated, all the elements inside an interface are accessible by dot notation without LEVELS interface instantiated simply because you cannot instantiate an interface - effectively making a class defined inside an interface permeable to static reference.
So saying that Items class in case B is not static does not make sense. Since both cases A and B are instantiated the same way, I am not looking for semantics on what is static or inner or nested. Stop giving me answers on semantics. I want the compiler, runtime and behavioural differences/advantages, or if none then say so. No more answers on semantics please!!!!! An expert on JVM or .NET VM specification innards please this answer question rather than text book semanticissiests.