| Author |
question about inner class instantiation
|
ronnir paterl
Greenhorn
Joined: Oct 18, 2007
Posts: 11
|
|
Hi I had a doubt about the instantiation of inner class� From what I know instantiation of an inner class requires an object of outer class, except when the inner class is instantiated within the outer class itself. public class outer{ class inner{ } inner in = new inner();// (1) valid public static void main(String []args){ inner in = new inner();// (2) not valid outer class object reqd. } } On similar lines consider this example� interface outer{ class inner{ } } public class outer2 implements outer{ public static void main(String args[]){ inner in = new inner(); // (3) valid } } So my question is 1.Why cant we instantiate an inner class in a static method of outer class. 2.And why can we do the same in a class which implements the interface of the outer class. Thanks in advance�
|
 |
marc weber
Sheriff
Joined: Aug 31, 2004
Posts: 11343
|
|
Good question! In an interface, a nested class definition is implicitly static. (See JLS 9.5.) Therefore, although it is a "nested" class, it is not an "inner" class. (See JLS 8, JLS 8.1.3, and JLS 8.5.2.) Because it is static, a static nested class can be instantiated without any enclosing instance. This makes it possible to instantiate from a static context, like main, where there is no implicit "this" referencing the current instance. (Edit: Added JLS references.) [ November 01, 2008: Message edited by: marc weber ]
|
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
|
 |
 |
|
|
subject: question about inner class instantiation
|
|
|