2009-01-27 41 views
10

Có ai biết về một phương pháp plug-in hoặc Eclipse để có được Eclipse để tạo getter/setters trên cùng một dòng như thế này:Eclipse getter định dạng/setter

public String getAbc() { return abc; } 

Thay vì

public String getAbc() { 
    return abc; 
} 

tôi trên Eclipse v. 3.2.2.

Cảm ơn.

Trả lời

12

Tôi không biết làm thế nào để làm cho Eclipse tạo ra chúng trong các định dạng mà bạn muốn, nhưng bạn có thể thực hiện tìm kiếm/thay thế bằng các biểu thức thông thường sau khi các phương pháp được tạo ra:

Find:

(?m)((?:public |private |protected)?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 

Thay thế bằng:

$1 $2$3($4) { $5 } 

biểu hiện này sẽ làm thay đổi thu khí được tạo ra và setters là một dòng. Đừng lo lắng về việc chạy nó với một hỗn hợp của các phương pháp được chuyển đổi và mới được tạo ra; Nó sẽ chỉ làm việc tốt.

+0

Cảm ơn Hosam. Tôi lý tưởng thích một cách để có Eclipse chỉ tạo ra các getters trên một dòng mà không cần phải thực hiện bước thứ hai. –

+0

Bạn được chào đón. Chúc may mắn tìm một. –

+0

Tôi sẽ nói rằng RegEx của bạn hoạt động tốt. Một điều - có vẻ như trong phiên bản/cấu hình của Eclipse của tôi, biểu thức "thay thế bằng" cần sử dụng dấu đô la thay vì dấu gạch chéo ngược: $ 1 $ 2 $ 3 ($ 4) {$ 5} –

1

Định dạng mã Java trong Eclipse không phân biệt giữa getters/setters và bất kỳ phương thức nào khác trong một lớp. Vì vậy, điều này không thể được thực hiện bằng cách xây dựng trong định dạng nhật thực.

Bạn sẽ cần một trong hai để:

  1. chạy một tìm kiếm/thay thế với regex nói trên
  2. được en Plugin bên ngoài như PMD hoặc CheckStyle và thực thi một quy tắc regex dựa trên tùy chọn trước đó
0

tôi muốn gửi như một bình luận cho câu trả lời được, nhưng tôi dường như không thể.

tôi sửa đổi câu trả lời Hosam Aly để làm việc với các kiểu generic và bên trong có dạng:

List<X> 

Map.Entry 

Các sửa đổi chuỗi tìm kiếm biểu thức chính quy là:

(?m)((?:public |private |protected)?[\w\.\<\>$]+) (get|set|is)([\w$]+)\(([\w\.\<\>$]+ [\w$]+)?\) \{\s+(return [\w\.\<\>$]+;|this.[\w$]+ = [\w$]+;)\s+\} 

Biểu thức chính quy này cho phép các dấu ngoặc nhọn và dấu chấm trong loại.

Ví dụ:

public List<String> getStringList() 

public void setStringList(List<String> list) 

public Map.Entry getEntry() 

Và thay thế chuỗi là giống như trước:

$1 $2$3($4) { $5 } 
4

Tôi nghĩ rằng phù hợp với Generics cũng rất quan trọng, vì vậy regexp đúng là:

(?m)((?:public |private |protected)?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 
+0

Điều này có lẽ đã là một bình luận về câu trả lời của Hosam Aly, không phải là câu trả lời của chính nó. – Jules

2

Là một biến thể của phương pháp thay thế regexp, sau đây định dạng lại khoảng trống đó setters được theo sau là một dòng trống, nhưng thu khí không.

Find:

(\s(?:get|is|set)\w+\([^)]*\))\s*\{\s*(?:([^=;}]+;)\s*\}\s*(\R)|([^=;}]+=[^=;}]+;)\s*\}\s*(\R)) 

Thay thế bằng:

$1 { $2$4 } \R$5 

Kết quả trong:

int getTotal() { return total; } 
void setTotal(int total) { this.total = total; } 

List<String> getList() { return list; } 
void setList(List<String> list) { this.list = list; } 

Map.Entry<String, Integer> getEntry() { return entry; } 
void setEntry(Map.Entry<String, Integer> entry) { this.entry = entry; } 

Đó là một điều thẩm mỹ nhỏ, nhưng tôi figured rằng nếu bạn đang tìm kiếm một trả lời cho câu hỏi này, sau đó bạn có thể (gần như) như hậu môn như tôi ;-)

Tôi biết điều kiện regexp của mình không nghiêm ngặt như của @Hosam, nhưng tôi chưa từng trải qua bất kỳ thay thế "dương tính giả" nào.

+0

tuyệt vời, chỉ là những gì tôi đang tìm kiếm! –

+0

câu trả lời hay nhất (đã thử tất cả các câu trả lời trong trang này) – ismail

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