簡單的內部類別使用:
public class OuterClass {
public OuterClass() {
}
public abstract class InnerAbstractClass {
public void a() {
}
public abstract void absMethod();
}
public void test() {
new OuterClass().new InnerAbstractClass() {
public void absMethod() {
}
};
}
public static void main(String[] args) {
new OuterClass().new InnerAbstractClass() {
public void absMethod() {
}
};
}
}
在上面範例中加入泛型
public class OuterClass<T> {
public OuterClass() {
}
public abstract class InnerAbstractClass {
public void a() {
}
public abstract void absMethod();
}
public void test() {
new OuterClass().new InnerAbstractClass() {
public void absMethod() {
}
};
}
public static void main(String[] args) {
new OuterClass().new InnerAbstractClass() {
public void absMethod() {
}
};
}
}
在test方法中呼叫內部類,編譯正確。在main方法中報錯,cannot be referenced from a static context
。
如果在另一個新建的類別中呼叫內部類別不報錯
public class OuterClassTest {
public static void main(String[] args) {
new OuterClass().new InnerAbstractClass() {
public void absMethod() {
}
};
}
}
為什麼? ? ?