Programing

PHP var_dump와 동등한 Java는 무엇입니까?

lottogame 2020. 7. 16. 08:09
반응형

PHP var_dump와 동등한 Java는 무엇입니까?


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에서 동일한 작업을 수행하는 동등한 기능은 무엇입니까?


Java에서는 그다지 중요하지 않으므로 무료로 얻을 수는 없습니다. 언어 구성이 아닌 관습으로 수행됩니다. 모든 데이터 전송 클래스에서 (그리고 아마도 모든 클래스에서 작성하는 경우에도 ... ) 합리적인 toString방법을 구현해야합니다 . 따라서 클래스 toString()에서 재정의 Person하고 원하는 상태를 반환해야합니다.

좋은 toString 메소드 작성에 도움 이되는 유틸리티있거나 대부분의 IDE에 자동 toString()작성 단축키가 있습니다.


필자의 경험에 따르면 var_dump는 일반적으로 step-though 디버거 대신 PHP를 디버깅하는 데 사용됩니다. Java에서는 물론 IDE의 디버거를 사용하여 객체 내용의 시각적 표현을 볼 수 있습니다.


대안은 toString()객체 메서드 를 재정 의하여 원하는 방식으로 내용을 출력하거나 리플렉션을 사용하여 객체를 검사하는 것입니다 (디버거와 비슷한 방식으로).

리플렉션을 사용하면 개별 객체를 "분석 가능"하도록 수정할 필요가 없지만 복잡성이 추가되고 중첩 된 객체 지원이 필요한 경우이를 작성해야합니다.

이 코드는 Object"o"에 대한 필드와 값을 나열합니다.

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

가장 좋은 방법은 google-gson (JSON을 Java 객체로 변환하거나 그 반대로 변환하는 Java 라이브러리)을 사용하는 것입니다.

다운로드 하여 "jar"파일을 프로젝트에 추가하십시오.

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

산출:

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

모든 객체 (배열, 목록 등)를 JSON으로 변환 할 수 있습니다. PHP의 var_dump () 의 최고의 아날로그라고 생각합니다.


Apache Commons lang 패키지는 리플렉션을 사용하여 필드의 값을 가져 오는 기본 toString () 메소드를 빌드하는 데 사용할 수있는 클래스를 제공합니다. 이것 좀 봐 .


나는 합리적인 결과로 Jestr사용 합니다.


GSON은 이미 작업중 인 프로젝트 유형에 의존하기 때문에 GSON을 사용하고 싶습니다.

public static String getDump(Object o) {
    return new GsonBuilder().setPrettyPrinting().create().toJson(o);
}

또는 사용하는 다른 JSON 라이브러리 대신 GSON을 사용하십시오.


객체를 덤프하는이 방법을 찾았습니다.이 문자열 덤프를 시도하십시오 (Object object)


XML 직렬화를 사용하면 깊이 중첩 된 객체라도 매우 깔끔하게 표현할 수 있습니다.


나는 당신이 할 수있는 비슷한 것이 당신이보고 싶은 객체를 인쇄하는 간단한 방법을 만드는 것이라고 생각합니다. 이 같은:

public static void dd(Object obj) { System.out.println(obj); }

var_dump ()와 같지는 않지만 디버거 IDE로 이동할 필요없이 일반적인 아이디어를 얻을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/301536/what-is-the-java-equivalent-of-php-var-dump

반응형