2013-08-21 52 views
19

Có thể thay đổi mẫu tạo mã cho equals()hashCode() không?Có thể thay đổi mẫu tạo mã IntelliJ cho bằng() và hashCode()

Tôi muốn mã được tạo để sử dụng lớp Java 7 Objects cho các phương pháp đề tài.

+1

Xem http://youtrack.jetbrains.com/issue/IDEA-56007. – CrazyCoder

+0

@CrazyCoder Tuyệt vời, tôi không cho rằng bạn có thể làm bất kỳ điều gì về việc nhận chỉ số vấn đề về Google của bạn? –

+0

Lập chỉ mục công cụ tìm kiếm được [cố ý tắt] (http://youtrack.jetbrains.net/robots.txt) trên trang web YouTrack. – CrazyCoder

Trả lời

21

Kể từ release 14.1 của Ultimate Edition, bạn có thể tùy chỉnh mẫu tạo mã bằng equals()/hashCode() mà không cần sử dụng bất kỳ plugin của bên thứ ba nào.

Bấm "Alt + Insert" (Tạo ...), chọn "equals() và hashCode()" và bạn sẽ có thể chọn một trong các mẫu được xác định trước hoặc mẫu tùy chỉnh của riêng bạn.

"Generate equals() and hashCode()" dialog

Edit "equals() and hashCode()" Velocity templates

+0

Tốt. Bạn có biết nơi tôi có thể tìm thấy một mẫu vận tốc để tạo ra bằng và kiểu mã hash của Eclipse không? – Timo

1

nó là có thể, nhưng với một số hack nhỏ. Tìm tệp tin idea.jar của bạn trong thư mục ứng dụng. Nhìn vào bên trong và tìm thấy các tập tin như:

  • apacheEqualsBuilder3.vm
  • apacheHashCodeBuilder3.vm

và các tập tin .vm khác ..

Những file mẫu tái sử dụng một số macro từ equalsHelper.vm.

Thay đổi những tập tin bên trong JAR cẩn thận như bạn thích ứng dụng khởi động lại và kiểm tra kết quả trong ý tưởng dưới

generate-> equals() và hashCode() -> Template (... ba dấu chấm ở bên phải) - > chỉ đọc bản xem trước ở bên phải.

Tôi nghĩ rằng việc cài đặt bản cập nhật của Idea có thể ghi đè JAR này với các thay đổi mẫu tùy chỉnh của bạn.

Nó hoạt động!Kiểm tra trong ý tưởng 15. Thưởng thức. :-)

+0

Tôi sử dụng phương pháp này kết hợp với trước để tinh chỉnh các mẫu máy phát của tôi cho bằng() và hashCode(). Mã trong tệp "* .vm" được viết bằng ngôn ngữ mẫu Apache Velocity (http://velocity.apache.org). – Rib47

Các vấn đề liên quan