2016-03-11 14 views
6

Tôi muốn tạo IntelliJ Idea mẫu cho toString phương pháp sử dụng String.format thay vì nối, StringBuffer vvIntelliJ mẫu Ý tưởng cho phương thức toString sử dụng String.format thay vì nối

Ví dụ tôi đã theo đối tượng:

public class Foo { 
    private int id; 
    private String name; 
    private List<String> values; 
} 

Nếu tôi tạo toString cho tất cả các lĩnh vực của Idea mặc định sẽ tạo ra:

@Override 
public String toString() { 
    return "Foo{" + 
      "id=" + id + 
      ", name='" + name + '\'' + 
      ", values=" + values + 
      '}'; 
} 

Nhưng tôi muốn tạo ra như sau:

@Override 
public String toString() { 
    return String.format("Foo(id=%d, name=%s, values=%s)", id, name, values); 
} 
+0

Bạn nên cẩn thận với điều này. Mặc dù String.format dễ đọc hơn, nhưng nó có hiệu năng rất kém so với kết nối cũ thời với +. –

Trả lời

8

Đối với bất cứ ai vẫn đang tìm kiếm này:

public java.lang.String toString() { 
return String.format(
"$classname (## 
#set ($i = 0) 
#foreach ($member in $members) 
#if ($i != 0)## 
, ## 
#end 
$member.name=%s## 
#set ($i = $i + 1) 
#end 
)",## 
#set ($i = 0) 
#foreach ($member in $members) 
    #if ($i != 0) 
    ,## 
    #end 
    #if ($member.primitiveArray || $member.objectArray) 
    java.util.Arrays.toString(this.$member.name)## 
    #else 
    this.$member.name ## 
    #end 
    #set ($i = $i + 1) 
#end 
); 
} 

Phỏng theo this template.

+0

Tuyệt vời. Cảm ơn bạn @Linuslabo! –

+0

@linuslabo chúng ta làm gì với những mẫu này chính xác? – anon58192932

+0

@ anon58192932 Bạn có thể tạo phương thức 'toString' trong lớp của bạn, sử dụng' String.format' (giống như được yêu cầu bởi câu hỏi). Xem [Intellij docs] (https://www.jetbrains.com/help/idea/2016.3/generating-tostring.html). – Linuslabo

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