我得到了名为 Values 的对象,它看起来像这样:
class Values{
private String name;
private String type;
private String value;
public Values(String name, String type, String value)
{this.name = name; this.type = type; this.value = value;}
public String getName()
{return name;}
public String getType()
{return type;}
public String getValue()
{return value;}
}
我的数据模型看起来像这样。我的输入是一个 XML 文件。一个包包含一些类,每个类都有一个名称、一个类型和一个值的属性。上面的类 Values 应该代表一个属性。
我使用 Multimaps 来保存这些信息。例如,所需的输出是这样的。
[PackageName:[ObjectName1, Values1],
[ObjectName1, Values2],
[ObjectName2, Values1]]
我处理输入 XML 文件的代码是这样的。For 循环将遍历输入文件的数据结构。
SAXBuilder builder = new SAXBuilder();
org.jdom2.Document doc = builder.build(input);
Element rootNode = doc.getRootElement();
List<Element> listPackages = rootNode.getChildren();
for(Element packages : listPackages)
{
List<Element> objectInstanceList = packages.getChildren();
for(Element objects : objectInstanceList)
{
Map<String, Multimap<String,Values>> valuesMap = new HashMap<String, Multimap<String, Values>>();
List<Element> listObjectClasses = objects.getChildren();
bdbID = objects.getName();
if (objects.getAttributes().size() == 0)
{
for(Element classes : listObjectClasses)
{
List<Element> listObjectAttributes = classes.getChildren();
for(Element objectAttributes : listObjectAttributes)
{
Multimap<String, Values> mm = HashMultimap.create();
String name = objectAttributes.getAttributeValue("name");
String type = objectAttributes.getAttributeValue("type");
String value = objectAttributes.getAttributeValue("value");
Values v = new Values(name, type, value);
mm.put(classes.getName(), v);
System.out.println(name +":" + type + ":" + value);
System.out.println(v);
}
valuesMap.put(bdbID, mm);
}
}
}
}
最后的 2 张照片用于测试目的,我的问题来了。重新打印两个打印件的输出。
输出 1:
Bandwidth:KiloBitPerSecond:50 //Name:Type:Value
输出 2:
Dataprocessing.Values@7d5b6e // Dataprocessing = Java-Package which contains the class.
问题是,为什么我会得到这个奇怪的输出?为此目的使用像 Values 这样的类是错误的吗?如果有人知道这样做的更好主意,我愿意接受一切。