JavaRush /Blog Java /Random-VI /10 mẹo ghi đè phương thức toString() trong Java (Phần 1)
Ku6ep
Mức độ

10 mẹo ghi đè phương thức toString() trong Java (Phần 1)

Xuất bản trong nhóm
10 mẹo để ghi đè phương thức toString() trong Java - ToStringBuilder Netbeans Eclipse 10 Mẹo ghi đè phương thức toString() trong Java (Phần 1) - 1

Phương thức Java toString

toStringPhương thức trong Java được sử dụng để cung cấp thông tin rõ ràng và đầy đủ về một đối tượng ( Object) ở dạng con người có thể đọc được. Ghi đè phương thức thích hợp toStringcó thể giúp ghi nhật kýgỡ lỗi chương trình Java bằng cách cung cấp thông tin quan trọng và có giá trị. Vì toString()nó được định nghĩa trong java.lang.Objectmột lớp và việc triển khai mặc định của nó không cung cấp nhiều thông tin nên cách tốt nhất là ghi đè phương thức này trong lớp con. Trong thực tế, nếu bạn đang tạo một lớp quan trọng hoặc chung của loại Orderhoặc Trade, Employeehãy luôn ghi đè bằng , hashCode , so sánhtoStringcác phương thức trong Java. Theo mặc định, việc triển khai toStringtạo ra kết quả ở dạng , package.class@hashCodeví dụ như trong ví dụ của chúng tôi, phương thức lớp sẽ in test.Country@18e2b22 trong đó 18e2b22 là mã băm của đối tượng ở dạng thập lục phân, nếu bạn gọi phương thức hashCode thì nó sẽ trả về 260943370 là số thập phân tương đương với 18e2b22. Thông tin này không đặc biệt hữu ích khi tìm kiếm một vấn đề. Hãy xem một ví dụ thực tế khi bạn cần tìm sự cố trong kết nối mạng của mình, trong trường hợp bạn muốn biết máy chủ và cổng nào mà hệ thống của bạn đang cố gắng kết nối và nếu hoặc chỉ in thông tin mặc định, nó sẽ là không thể tưởng tượng được vấn đề thực sự, nhưng với việc triển khai được ghi đè, chúng có thể cung cấp thông tin hữu ích như tên máy chủ và số cổng. Trong hướng dẫn Java này, chúng tôi sẽ đưa ra một số mẹo về ghi đè phương thức bằng các ví dụ về mã. toString()toString()CountrySocketServerSockettoStringtoStringtoString

Cách ghi đè phương thức toString trong Java:

In ngày được định dạng (tức là ngày/tháng/năm) thay vì giá trị thô. Đây là một gợi ý rất hữu ích khi ghi đè một phương thức Java toString. toString()Lớp thông thường java.util.Datekhông xuất ra ngày được định dạng và bao gồm nhiều chi tiết không phải lúc nào cũng cần thiết. Nếu bạn đang sử dụng một phần DateFormat , tức là. dd-MM-yy trong ứng dụng của mình thì bạn chắc chắn sẽ muốn xem định dạng này thay vì định dạng mặc định. IDE thường không tạo ra đầu ra được định dạng Datevà đây là việc bạn cần phải tự làm, nhưng nó đáng giá. Đọc Cách in ngày ở định dạng ddMMyy trong Java để biết chi tiết về định dạng Datetrong Java. Bạn cũng có thể sử dụng lớp SimpleDataFormat hoặc thư viện thời gian Ngày Joda cho việc này.

Ghi lại định dạng toString

Nếu phương thức của bạn toString()không xuất dữ liệu dưới dạng trường=giá trị thì bạn nên ghi lại định dạng đầu ra toString, đặc biệt đối với các đối tượng quan trọng như Nhân viên hoặc Sinh viên. Ví dụ: nếu một phương thức toString()lớp Работник(Employee)in " John-101-Sales-9846387321 " thì cách tốt nhất là chỉ định định dạng là "name-id-department-contact", nhưng đồng thời không cho phép khách hàng nhận được thông tin từ phương thức toString(), bạn phải luôn cung cấp các phương thức thích hợp để truy xuất dữ liệu, chẳng hạn như getName(), getId(), getContact()v.v., vì thông tin thu được từ toString()biểu diễn đối tượng rất mong manh và dễ bị lỗi, do đó máy khách phải luôn có đường dẫn rõ ràng để lấy thông tin thông tin.

Sử dụng StringBuilder để soạn kết quả đầu ra của toString()

Nếu bạn đang viết mã cho một phương thức toString()trong Java thì hãy sử dụng StringBuilder để thêm các thuộc tính riêng lẻ. Nếu bạn đang sử dụng một IDE như Eclipse , Netbeans hoặc IntelliJ thì sử dụng StringBuilderphương thức and append()thay vì toán tử + để soạn thảo toStringcũng là một cách tốt. Theo mặc định, cả Eclipse và Netbeans đều tạo toStringbằng toán tử nối.

Sử dụng chú thích @Override

Sử dụng @Overrideghi đè phương thức trong Java là một trong những cách thực hành tốt nhất trong ngôn ngữ này. Nhưng gợi ý này không quan trọng bằng trong trường hợp ghi đè the equals()và các phương thức compareTo(), vì việc nạp chồng thay vì ghi đè có thể tạo ra nhiều lỗi tinh vi hơn khó tính toán. Trong mọi trường hợp, tốt hơn là sử dụng chú thích @Overrride.

In nội dung của một mảng thay vì in đối tượng mảng

Mảng là một đối tượng trong Java nhưng nó không ghi đè một phương thức toStringvà khi bạn in một mảng, định dạng đầu ra mặc định không hữu ích lắm vì chúng ta muốn xem nội dung của mảng. Nhân tiện, đây là một lý do khác tại sao mảng char[] lại thích hợp hơn String để lưu trữ dữ liệu nhạy cảm như mật khẩu. Hãy dành thời gian để xem liệu việc in nội dung của một mảng có giúp ích cho khách hàng của bạn hay không và nếu điều đó hợp lý thì hãy in nội dung của mảng thay vì chính đối tượng đó. Vì lý do hiệu suất, tốt hơn nên sử dụng HashSet như Collectionvậy để lưu trữ các đối tượng khác. ArrayListArray

Mẹo thưởng

Một số mẹo bổ sung khác về ghi đè phương thức toStringtrong Java.
  1. In đầu ra toStringthành nhiều dòng hoặc một dòng dựa trên độ dài của nó.

  2. Bao gồm các tên lớp đủ điều kiện trong biểu diễn toString, nói cách khác package.classđể tránh bất kỳ sự hiểu lầm nào.

  3. Bạn có thể bỏ qua các giá trị null hoặc hiển thị chúng, nhưng tốt hơn hết là hiển thị chúng. Đôi khi chúng hữu ích vì chúng hiển thị trường nào xuất hiện nulltrong một số sự cố, ví dụ NullPointerException .

  4. Ví dụ: sử dụng định dạng khóa-giá trị, member.name=member.valuehầu hết các IDE đều hỗ trợ điều này.

  5. Bao gồm các thành viên được kế thừa nếu bạn cho rằng họ nên cung cấp thông tin cần thiết cho lớp kế thừa.

  6. Đôi khi một đối tượng chứa nhiều tham số tùy chọn và bắt buộc, như chúng tôi đã trình bày trong ví dụ về mẫu Builder , khi gần như không thể in tất cả các trường, trong trường hợp này, chúng tôi chỉ có thể in các trường bắt buộc, đặc biệt vì chúng tôi có các trường tùy chọn.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION