我有一个类的一些HashMap类型:
private class XmlHandler extends DefaultHandler{
private HashMap<String, String> Attribs;
private HashMap<String, List<Attribs> >FragmentNode;
private HashMap<String, List<FragmentNode> > ActivityNode;
编译时,我收到以下错误:
cannot find symbol FragmentNode and Attribs.
如果我修改声明插入原始类型,例如将HashMap<String, List<Attribs>
更改为HashMap<String, HashMap<String, String>>
,编译器会停止抱怨。
我需要这样做吗?Java不理解像这样的类型声明?
FragmentNode
和Attribs
不是a类型,是a变量,不能给HashMap
指定变量作为类型
你可以这样做:
private HashMap<String, List<HashMap<String, String>>> FragmentNode;
或者您可以创建一个具有attributes HashMap的类,就像:
public class Attribs {
private HashMap<String, String> Attribs;
}
:
private HashMap<String, List<Attribs>> FragmentNode;
你好像把类型和属性混在一起了。
如果你想要这样一个特定的层次结构,你应该定义新的类:
class Attribs extends HashMap<String, String> {}
class FragmentNode extends HashMap<String, List<Attribs>> {}
class ActivityNode extends HashMap<String, List<FragmentNode>> {}
然后你可以创建这样的成员:
private class XmlHandler extends DefaultHandler {
private Attribs attribs;
private FragmentNode fragmentNode;
private ActivityNode activityNode;
}