if you declare a class like this
class OuterClass{
static class A{
class B{
public void get(){
Class C{
}
}
}
}
}
there will be four class generated:
OuterClass.class
OuterClass$A.class
OuterClass$A$B.class
OuterClass$A$B$1C.class
1,if you decorate a inner class with private. it will be hiden to other class in the same package.
2,Inner class can be definded as abstract
3,you can not defind a static field in a non static inner class
4,if you use a anonymous inner class in one method and you want to use the param defined in the method, the param must be declare as final.
that is:
class A{
public Object get(final int a){
return new Object(){
public int get(){
return a;
}
}
}
}
class OuterClass{
static class A{
class B{
public void get(){
Class C{
}
}
}
}
}
there will be four class generated:
OuterClass.class
OuterClass$A.class
OuterClass$A$B.class
OuterClass$A$B$1C.class
1,if you decorate a inner class with private. it will be hiden to other class in the same package.
2,Inner class can be definded as abstract
3,you can not defind a static field in a non static inner class
4,if you use a anonymous inner class in one method and you want to use the param defined in the method, the param must be declare as final.
that is:
class A{
public Object get(final int a){
return new Object(){
public int get(){
return a;
}
}
}
}