JavaRush /Java Blog /Random-KO /Java에서 toString() 메서드를 재정의하기 위한 10가지 팁(1부)
Ku6ep
레벨 35

Java에서 toString() 메서드를 재정의하기 위한 10가지 팁(1부)

Random-KO 그룹에 게시되었습니다
Java에서 toString() 메서드를 재정의하는 10가지 팁 - ToStringBuilder Netbeans Eclipse Java에서 toString() 메서드를 재정의하기 위한 10가지 팁(1부) - 1

자바 toString 메소드

toStringObjectJava의 메소드는 사람이 읽을 수 있는 형식으로 객체( )에 대한 명확하고 충분한 정보를 제공하는 데 사용됩니다 . 적절한 메소드 재정의는 귀중하고 중요한 정보를 제공하여 Java 프로그램을 로깅 하고 디버깅하는toString 데 도움이 될 수 있습니다 . 클래스 에 정의되어 있고 기본 구현에서는 많은 정보를 제공하지 않으므로 항상 하위 클래스에서 이 메서드를 재정의하는 것이 가장 좋습니다. 실제로, 또는 유형의 중요하거나 일반적인 클래스를 생성하는 경우 항상 Java 의 equals , hashCode , CompareTo 메서드 를 재정의하세요. 기본적으로 구현은 형식으로 출력을 생성합니다 . 예를 들어 클래스 메소드는 test.Country@18e2b22를 인쇄합니다. 여기서 18e2b22는 16진수로 된 객체의 해시 코드입니다. hashCode 메소드를 호출하면 260943370 반환됩니다. 18e2b22에 해당하는 10진수 입니다. 이 정보는 문제를 검색할 때 특히 유용하지 않습니다. 네트워크 연결에서 문제를 찾아야 하는 실제 예를 살펴보겠습니다. 시스템이 어떤 호스트와 포트에 연결하려고 하는지 알고 싶고 기본 정보 만 인쇄 하는지 여부는 다음과 같습니다. 실제 문제를 상상하는 것은 불가능하지만 재정의된 구현을 통해 호스트 이름 및 포트 번호와 같은 유용한 정보를 제공할 수 있습니다. 이 Java 튜토리얼에서는 코드 예제를 사용하여 메서드 재정의에 대한 몇 가지 팁을 제공합니다 . toString()java.lang.ObjectOrderTradeEmployeetoStringtoStringpackage.class@hashCodetoString()toString()CountrySocketServerSockettoStringtoStringtoString

Java에서 toString 메소드를 재정의하는 방법:

원시 값 대신 형식이 지정된 날짜(예: 일/월/년)를 인쇄합니다. 이는 Java 메소드를 대체할 때 매우 유용한 힌트입니다 toString. 일반 toString()클래스는 java.util.Date형식화된 날짜를 출력하지 않으며 항상 필요하지 않은 많은 세부 정보를 포함합니다. 부분 DateFormat을 사용하는 경우 , 즉 애플리케이션에 dd-MM-yy가 있는 경우 기본 형식 대신 이 형식을 확인하고 싶을 것입니다. IDE는 일반적으로 형식화된 출력을 생성하지 않으며 Date이는 사용자가 직접 수행해야 하는 작업이지만 그만한 가치가 있습니다. Java 형식 지정에 대한 자세한 내용은 Java에서 ddMMyy 형식으로 날짜를 인쇄하는 방법을 읽어보세요 Date. 이를 위해 SimpleDataFormat 클래스 또는 Joda Date 시간 라이브러리를 사용할 수도 있습니다 .

toString 형식 문서화

메소드가 데이터를 필드=값으로 출력하지 않는 경우 특히 Employee 또는 Student와 같은 중요한 개체의 경우 toString()출력 형식을 문서화하는 것이 좋습니다 . toString예를 들어 toString()클래스 메소드가 Работник(Employee)" John-101-Sales-9846387321 "을 인쇄하는 경우 형식을 "name-id-department-contact"로 지정하는 것이 좋은 방법이지만 동시에 클라이언트가 가져오는 것을 허용하지 않습니다. 객체 표현 에서 얻은 정보는 취약하고 오류가 발생하기 쉬우 므로 클라이언트 는 항상 , 등 의 toString()데이터 검색을 위한 적절한 메소드를 제공해야 합니다 . 따라서 클라이언트는 항상 데이터를 얻기 위한 깨끗한 경로를 가져야 합니다. 정보. getName()getId()getContact()toString()

StringBuilder를 사용하여 toString()의 출력을 구성합니다.

toString()Java로 메소드에 대한 코드를 작성하는 경우 StringBuilder를 사용하여 개별 속성을 추가하십시오. Eclipse , Netbeans 또는 IntelliJ와 같은 IDE를 사용하는 경우 + 연산자 대신 StringBuilderand 메소드를 사용하여 작성하는 것도 좋은 방법입니다. 기본적으로 Eclipse와 Netbeans는 모두 연결 연산자를 사용하여 생성됩니다. append()toStringtoString

@Override 주석 사용

Java에서 메서드 재정의를 사용하는 @Override것은 언어의 모범 사례 중 하나입니다. equals()그러나 이 힌트는 및 메서드 를 재정의하는 경우만큼 중요하지 않습니다 compareTo(). 재정의하는 대신 오버로드하면 계산하기 어려운 미묘한 오류가 발생할 수 있기 때문입니다. 어쨌든 주석을 사용하는 것이 좋습니다 @Overrride.

배열 객체를 인쇄하는 대신 배열의 내용을 인쇄합니다.

배열은 Java의 객체이지만 메소드를 재정의하지 않으며 toString배열을 인쇄할 때 배열의 내용을 보고 싶기 때문에 기본 출력 형식은 그다지 유용하지 않습니다. 그건 그렇고, 이것이 비밀번호와 같은 민감한 데이터를 저장하기 위해 String보다 char[] 배열을 선호하는 또 다른 이유입니다. 배열의 내용을 인쇄하는 것이 클라이언트에게 도움이 되는지 여부를 시간을 들여 살펴보고, 그것이 타당하다면 객체 자체 대신 배열의 내용을 인쇄하십시오. 성능상의 이유로 다른 개체를 저장하는 대신 Collection이러한 ArrayList또는 HashSet을 사용하는 것이 좋습니다 Array.

보너스 팁

Java의 메소드 재정의에 대한 추가 팁 toString.
  1. 출력을 toString여러 줄로 인쇄하거나 길이에 따라 한 줄로 인쇄합니다.

  2. toString즉, package.class오해를 피하기 위해 표현에 정규화된 클래스 이름을 포함합니다 .

  3. Null 값을 건너뛰거나 표시할 수 있지만 표시하는 것이 더 좋습니다. 때로는 NullPointerExceptionnull 과 같이 일부 사건 중에 어떤 필드가 존재하는지 보여주기 때문에 유용합니다 .

  4. 키-값 형식을 사용하세요. 예를 들어 member.name=member.value대부분의 IDE가 이를 지원합니다.

  5. 상속 클래스에 필요한 정보를 제공해야 한다고 생각되는 경우 상속 멤버를 포함합니다.

  6. 때로는 빌더 템플릿 예 에서 보여준 것처럼 객체에 많은 선택적 및 필수 매개변수가 포함되어 있을 수 있습니다 . 이때 모든 필드를 인쇄하는 것이 거의 불가능합니다. 이 경우 특히 선택적 필드가 있기 때문에 필수 필드만 인쇄할 수 있습니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION