public class Demo {
public static void main(String[] args) {
Outer.Inner inner = new Outer.Inner();
inner.dostuff();
}
}
class Outer {
private static int size;
static class Inner {
public void dostuff() {
size++;
System.out.println("size=" + size);
}
}
}
局部内部类定义在代码块中,只在该块内可见。不能是 static,也不能用 public / private / protected,可以用 abstract。Java 8 之前只能访问块里的 final 局部变量;Java 8 起改为“实际上的 final”(赋值一次即可,不必写出 final)。
public class Outer {
public static final int TOTAL_NUMBER = 5;
public int id = 123;
public void func() {
final int age = 15;
String str = "http://www.warmtel.com";
class Inner {
public void innerTest() {
System.out.println(TOTAL_NUMBER);
System.out.println(id);
// str 若后面还会被赋值,这里就不能用
System.out.println(age);
}
}
new Inner().innerTest();
}
}
abstract class Person {
public abstract void eat();
}
public class Demo {
public static void main(String[] args) {
new Person() {
public void eat() {
System.out.println("eat something");
}
}.eat();
}
}