programing

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

sourcetip 2022. 12. 7. 00:24
반응형

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

자바에서는 그다지 베이크인이 되지 않기 때문에 무료로 받을 수 있는 것은 아닙니다.그것은 언어 구성보다는 관례로 행해진다.모든 데이터 전송 클래스(아마도 사용자가 쓰는 모든 클래스...)에서 합리적인 방법을 구현해야 합니다.그러니까 여기서 오버라이드 해야 합니다.toString()당신의 안에서Person원하는 상태를 반환합니다.

적절한 toString 메서드를 쓰는 데 도움이 되는 유틸리티가 있습니다.또는 대부분의 IDE에는 자동 기능이 있습니다.toString()쓰기 단축키

제 경험상, var_dump는 보통 스텝 스킴 디버거 대신 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() 메서드를 구축하는 데 사용할 수 있는 클래스를 제공합니다.이것 좀 보세요.

저는 GSON을 사용하는 것을 좋아합니다. GSON은 이미 작업 중인 프로젝트 유형에 따라 달라지는 경우가 많기 때문입니다.

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

또는 사용하는 다른 JSON 라이브러리를 GSON으로 대체할 수도 있습니다.

나는 합리적인 결과를 가진 Jestr를 사용한다.

개체를 덤프하기 위해 이 메서드를 찾았습니다. 이 문자열 덤프(개체)를 사용해 보십시오.

보고 싶은 물건을 인쇄하는 간단한 방법을 만드는 것도 비슷한 방법이라고 생각합니다.다음과 같은 경우:

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

var_dump()와 동일하지는 않지만 디버거 IDE로 이동할 필요 없이 대략적인 정보를 얻을 수 있습니다.

객체의 개인 변수에 액세스할 수 있도록 Field 솔루션(setAccessible)에 추가하기만 하면 됩니다.

public static void dd(Object obj) throws IllegalArgumentException, IllegalAccessException {
    Field[] fields = obj.getClass().getDeclaredFields();
    for (int i=0; i<fields.length; i++)
    {
        fields[i].setAccessible(true);
        System.out.println(fields[i].getName() + " - " + fields[i].get(obj));
    } 

}

XML 시리얼라이제이션에서는 깊이 중첩된 오브젝트도 깔끔하게 표현할 수 있습니다.

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

반응형