PHP var_dump Java eşdeğer nedir?

8 Cevap java

Bir nesnenin türünü ve içeriğini gösteren, bir nesnenin iç içeriğini çıktılar PHP has a var_dump() function.

Örneğin:

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);

çıktısı:

object(Person)#1 (2) {
  ["firstName:private"]=>
  string(3) "Jon"
  ["lastName:private"]=>
  string(5) "Smith"
}

What is the equivalent in Java that will do the same?

8 Cevap

It is not quite as baked-in in Java, so you don't get this for free. Bu kongre ziyade dil yapıları ile yapılır. Tüm veri transferi sınıfları (ve belki hatta in all classes you write...), uygulamak gerektiğini mantıklı bir toString method. So here you need to override toString() sizin Person sınıfında ve dönüş olarak istenen durum.

İyi bir toString yöntemi yazma, ya da en IDE otomatik toString() yazma kısayolu ile utilities available bu yardım vardır.

EDIT: ölü linkler - here mevcuttur.

Benim durumumda, var_dump tipik bir adım olsa hata ayıklayıcı yerine PHP hata ayıklama için kullanılır. Java'da, sen elbette bir nesnenin içeriğinin bir görsel temsilini görmek için IDE hata ayıklayıcı kullanabilirsiniz.

Sizin alternatifleri gibi bir şekilde çıkış için nesnenin toString() yöntemini içeriği geçersiz kılmak için, ya da (ayıklayıcıları ne benzer bir şekilde) nesneyi incelemek için yansıma kullanmak için vardır.

Yansıma kullanmanın avantajı "olarak analiz" olmak için bireysel nesneleri değiştirmenize gerek olmayacak, ama orada karmaşıklığı eklenir ve iç içe nesne desteği gerekiyorsa bunu yazmak zorunda olacak olmasıdır.

Bu kod, bir Object "o" için alanlar ve onların değerlerini listeler

Field[] fields = o.getClass().getDeclaredFields();
for (int i=0; i<fields.length; i++)
{
    System.out.println(fields[i].getName() + " - " + fields[i].get(o));
}

Apache commons lang paketi alanların değerlerini almak için yansıma kullanarak varsayılan bir toString () yöntemi oluşturmak için kullanılabilecek böyle bir sınıf sağlar. Sadece this bakabilirsiniz.

I Jestr makul sonuçlar ile kullanabilirsiniz.

Ben nesne dökümü, String dump(Object object) bu deneyin bu yöntemi bulundu

XML serileştirme, ve hatta iç içe nesnelerin çok düzgün temsil almalısınız.

Ben bunu yapmak için en iyi yolu, (A Java kütüphanesi Java nesneleri ve tersi JSON dönüştürmek için) google-GSON kullanılarak olduğunu düşünüyorum

Download Bu, proje için "kavanoz" dosya eklemek

HashMap<String, String> map = new HashMap<String, String>();

map.put("key_1", "Baku");
map.put("key_2", "Azerbaijan");
map.put("key_3", "Ali Mamedov");

Gson gson = new Gson();

System.out.println(gson.toJson(map));

Çıktı:

{"key_3":"Ali Mamedov","key_2":"Azerbaijan","key_1":"Baku"}

JSON herhangi bir nesne (diziler, listeler vb) dönüştürebilirsiniz. Ben PHP en var_dump() en iyi analog olduğunu düşünüyorum