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 |