1

Java是否允许做类似的事情:

抽象.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());
    }
}

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

4

1 回答 1

6

您的问题与嵌套类无关,而与 in 方法Map被调用这一事实有关put,而不是insert.

你试图做的是完全有效的。更改insertput并导入java.util.HashMapin 后Base.java,您的代码将编译。

于 2013-10-11T21:39:29.973 回答