首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得奇怪的输出,比如"Values@7d5b6e“,而不是某些字符串

获得奇怪的输出,比如"Values@7d5b6e“,而不是某些字符串
EN

Stack Overflow用户
提问于 2013-09-25 12:10:18
回答 2查看 350关注 0票数 0

我得到了我的被称为值的对象,它看起来如下:

代码语言:javascript
复制
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;}
  }

我的Datamodel看起来是这样的。我的输入是一个XML文件。包包含一些类,每个类都有一个名称、类型和值的属性。上面的类值应该表示一个属性。

我使用Multimaps来保存这些信息。例如,所需的输出如下。

代码语言:javascript
复制
[PackageName:[ObjectName1, Values1],
             [ObjectName1, Values2],
             [ObjectName2, Values1]]

我处理输入XML的代码如下所示。For-循环将迭代输入文件的数据结构。

代码语言:javascript
复制
        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);
                     }
                   }
             }
     }

最后的两个打印是为了测试目的,这是我的问题。恢复两个打印的输出。

产出1:

代码语言:javascript
复制
Bandwidth:KiloBitPerSecond:50   //Name:Type:Value

产出2:

代码语言:javascript
复制
Dataprocessing.Values@7d5b6e   // Dataprocessing = Java-Package which contains the class.

问题是,为什么我要得到这个奇怪的输出?为此目的使用类似值的类是错误的吗?如果有人知道更好的办法来做这件事,我对一切都敞开心扉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-25 12:11:53

您正在看到Object#toString表示的Values。您需要重写该类中的toString以提供格式化输出。

代码语言:javascript
复制
@Override
public String toString() {
    return "Values [name=" + name + ", type=" + type + ", value=" + value + "]";
}
票数 3
EN

Stack Overflow用户

发布于 2013-09-25 12:11:37

您必须在您的toString()类中使用Values方法。

根据toString()的文档

返回对象的字符串表示形式。通常,toString方法返回“文本表示”此对象的字符串。

所以

Dataprocessing.Values@7d5b6e是值类的文本表示形式。

您只需要在toString类中使用Values方法。

代码语言:javascript
复制
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;
    }

    @Override
            public String toString() {
                 StringBuilder result = new StringBuilder();
                 result.append(this.name ).append(",");  
                 result.append(this.type ).append(",");
                 result.append(this.value )
                 return result.toString();
            }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19004541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档