O PHP possui um var_dump () função que gera o conteúdo interno de um objeto, mostrando o tipo e o conteúdo de um objeto.
Por exemplo:
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);
irá produzir:
object(Person)#1 (2) {
["firstName:private"]=>
string(3) "Jon"
["lastName:private"]=>
string(5) "Smith"
}
Qual é o equivalente em Java que fará o mesmo?
Respostas:
Como o Java não é tão elaborado, você não recebe isso de graça. Isso é feito com convenções e não com construções de linguagem. Em todas as classes de transferência de dados (e talvez até em todas as classes que você escreve ... ), você deve implementar um
toString
método sensato . Então, aqui você precisa substituirtoString()
seuPerson
classe e retornar o estado desejado.Existem utilitários disponíveis que ajudam a escrever um bom método toString, ou a maioria dos IDEs possui um
toString()
atalho de gravação automático .fonte
Na minha experiência, var_dump é normalmente usado para depurar o PHP no lugar de um depurador passo a passo. Em Java, é claro que você pode usar o depurador do IDE para ver uma representação visual do conteúdo de um objeto.
fonte
Suas alternativas são substituir o
toString()
método do seu objeto para produzir o conteúdo da maneira que você gosta, ou usar a reflexão para inspecionar o objeto (de maneira semelhante ao que os depuradores fazem).A vantagem de usar a reflexão é que você não precisará modificar seus objetos individuais para ser "analisável", mas há complexidade adicional e, se você precisar de suporte a objetos aninhados, precisará escrever isso.
Este código listará os campos e seus valores para um
Object
"o"fonte
Eu acho que a melhor maneira de fazer isso é usando o google-gson (uma biblioteca Java para converter objetos JSON em Java e vice-versa)
Faça o download , adicione o arquivo "jar" ao seu projeto
Resultado:
Você pode converter qualquer objeto (matrizes, listas e etc) para JSON. Eu acho que é o melhor analógico do var_dump () do PHP
fonte
O pacote apache commons lang fornece uma classe que pode ser usada para criar um método toString () padrão usando reflexão para obter os valores dos campos. Basta dar uma olhada nisso .
fonte
Eu uso Jestr com resultados razoáveis.
fonte
Eu gosto de usar o GSON porque muitas vezes já é uma dependência do tipo de projeto em que estou trabalhando:
Ou substitua o GSON por qualquer outra biblioteca JSON usada.
fonte
Encontrei este método para despejar objeto, tente este despejo de String (objeto Objeto)
fonte
Você serializa XML e deve obter uma representação muito elegante, mesmo de objetos profundamente aninhados.
fonte
Eu acho que algo semelhante que você poderia fazer é criar um método simples que imprima o objeto que você deseja ver. Algo assim:
Não é o mesmo que var_dump (), mas você pode ter uma idéia geral, sem a necessidade de acessar o IDE do depurador.
fonte
Apenas para adicionar a solução Field (o setAccessible) para que você possa acessar a variável privada de um objeto:
fonte