问题
PHP有一个var_dump()函数,它输出一个对象的内部内容,显示一个对象的类型和内容。
例如:
class Person {
private $firstName;
private $lastName;
public function __construct($firstName, $lastName) {
$this->firstName = $firstName;
$this->lastName = $lastName;
}
}
$person = new Person('Jon', 'Smith');
var_dump($person);
将输出:
object(Person)#1 (2) {
["firstName:private"]=>
string(3) "Jon"
["lastName:private"]=>
string(5) "Smith"
}
Java中的等价物是什么?
#1 热门回答(58 赞)
**它并不像Java那样,所以你不能免费获得它。**这是通过约定而不是语言结构完成的。在所有数据传输类中(甚至可能在你编写的所有类中......),你应该实现一个sensibletoString
方法。所以在这里你需要覆盖yourPerson
class中的toString()
并返回所需的状态。
有3224247106有助于编写一个好的toString方法,或者大多数IDE都有一个自动的toString()
写快捷方式。
编辑:链接死 - 现在可用here
。
#2 热门回答(27 赞)
根据我的经验,var_dump通常用于调试PHP而不是逐步调试器。在Java中,你当然可以使用IDE的调试器来查看对象内容的可视化表示。
#3 热门回答(15 赞)
你可以选择覆盖对象的toString()
方法,以你喜欢的方式输出其内容,或者使用反射来检查对象(以类似于调试器的方式)。
使用反射的优点是你不需要将单个对象修改为"可分析",但是增加了复杂性,如果你需要嵌套对象支持,则必须编写它。
此代码将列出aObject
"o"的字段及其值
Field[] fields = o.getClass().getDeclaredFields();
for (int i=0; i<fields.length; i++)
{
System.out.println(fields[i].getName() + " - " + fields[i].get(o));
}