嵌套类中的Java抽象继承

时间:2013-10-11 21:38:12

标签: java

Java是否允许执行与此类似的操作:

Abstract.java:

public abstract class Abstract {
    int state;
    abstract void changeState(int newState);
    public static class Inherited extends Abstract {
        void changeState (int newState) {
            /* ... */
        }
    }
}

Base.java:

public class Base {
    static HashMap<String, Abstract> map;
    static {
        map.insert("handle", new Abstract.Inherited());
    }
}

当我尝试编译它时,我得到:“方法insert(String,Abstract.Inherited)未定义类型HashMap String,Abstract”。我知道我可以通过将Inherited完全移出Abstract来解决它,但有没有办法保留它?

1 个答案:

答案 0 :(得分:6)

您的问题与嵌套类无关,而且与Map中的方法被称为put而不是insert的事实有关。

您要做的事情完全有效。将insert更改为put并导入java.util.HashMap中的Base.java后,您的代码就会编译。