当前位置:  开发笔记 > 编程语言 > 正文

Java:print_r?

如何解决《Java:print_r?》经验,为你挑选了4个好方法。

上次我问这里如何填充数据结构.现在我想知道Java中是否存在某些东西,比如我在PHP中使用的print_r,它代表我在地图和列表中填充的内容而不必自己编写算法.

有任何想法吗?



1> workmad3..:

在集合上调用toString应该返回一个包含所有元素字符串表示的字符串.

但这不适用于内置数组,因为它们没有toString覆盖,只会给你一个内存地址.


@trusktr对于自定义类,你必须覆盖`toString()`方法,使它返回你想要的.

2> darpet..:

java中的toString()和PHP中的print_r()之间确实存在差异.请注意,php中也有__toString(),相当于java中的toString(),所以这不是答案.

当我们有一个对象结构时,就会使用print_r,我们很快就会看到对象的完整图形及其值.

在java中为每个对象实现toString无法与print_r进行比较.

而是使用gson.它与print_r完成相同的工作

Gson gson = new GsonBuilder().setPrettyPrinting().create();
的System.out.println(gson.toJson(someObject));

这样,您不需要为测试它所需的每个对象实现toString.

以下是文档:http: //sites.google.com/site/gson/gson-user-guide

演示类(在java中):

公共类A {

int firstParameter = 0;
B secondObject = new B();

}

公共课B {

String myName = "this is my name";  

}

这是php中的print_r输出:

对象
(
[firstParameter:private] => 0
[secondObject:private] => B对象
(
[myName:private] =>这是我的名字
)

)

这是java中带gson的输出:

{
"firstParameter":0,
"secondObject":{
"myName":"这是我的名字"
}
}



3> laz..:

根据您的具体要求,解决方案可能非常简单.以下内容不会生成print_r提供的格式化输出,但它允许您输出列表,数组和映射的结构:

    // Output a list
    final List list = new ArrayList();
    list.add("one");
    list.add("two");
    list.add("three");
    list.add("four");
    System.out.println(list);

    // Output an array
    final String[] array = {"four", "three", "two", "one"};
    System.out.println(Arrays.asList(array));

    // Output a map
    final Map map = new HashMap();
    map.put("one", "value");
    map.put("two", "value");
    map.put("three", "value");
    System.out.println(map.entrySet());

对于其他类型的对象,您可以使用反射为此目的创建实用程序.



4> 小智..:

您可以尝试使用旧的Apache Commons Lang的ToStringBuilder.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有