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来解决它,但有没有办法保留它?
答案 0 :(得分:6)
您的问题与嵌套类无关,而且与Map
中的方法被称为put
而不是insert
的事实有关。
您要做的事情完全有效。将insert
更改为put
并导入java.util.HashMap
中的Base.java
后,您的代码就会编译。