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
'programing' 카테고리의 다른 글
| MariaDB/Mediawiki의 다중 행 정규식 일치 (0) | 2022.12.07 |
|---|---|
| Vue: 하나의 웹사이트에서 여러 개의 Vue 앱을 사용할 수 있습니까? (0) | 2022.12.07 |
| jdbc:mysql://localhost:3306/mysql에 적합한 드라이버를 찾을 수 없습니다. (0) | 2022.12.07 |
| jQuery에서 라디오 버튼을 확인하는 방법 (0) | 2022.12.07 |
| Node.js에서 URL을 인코딩하려면 어떻게 해야 하나요? (0) | 2022.12.07 |