2009-11-23 10 views
23

Làm thế nào bạn có thể nhận IntelliJ để tạo getter/setters trên cùng một dòng như thế này:IntelliJ getter/setter định dạng

public String getAbc() { return abc; } 

Thay vì

public String getAbc() { 
    return abc; 
} 

??

Trả lời

11

Không có mẫu nào cho getters cũng như cho bằng/hashcode. Chúng được mã hóa cứng trong IDEA.

Source

Bạn có thể thấy rằng trong này IntelliJ Wishlist

+3

Hiện tại (tôi sử dụng Ultimate 2016) - xem câu trả lời bên dưới – werner

10

Bạn đã không đề cập đến những gì phiên bản của IDEA bạn đang sử dụng, vì vậy tôi giả định gần đây 8 hoặc 9.

Kiểm tra cài đặt Mã Phong cách của bạn, dưới "Alignment và niềng răng". Bạn nên tìm tùy chọn "Phương thức đơn giản trong một dòng" ở đó.

+0

Chúng tôi là 8.1.3. Điều đó dường như không hoạt động mặc dù .. –

+0

Bạn có thử bỏ chọn hộp "Ngắt dòng" có liên quan trong nhóm "Giữ khi định dạng lại" không? – seh

+3

Cài đặt một dòng yêu cầu IntelliJ để nó theo cách đó trên định dạng lại, nhưng không tạo ra theo cách đó. –

9

Tôi không biết lý do tại sao bạn muốn làm điều này, có lẽ để tiết kiệm không gian thị giác. Nếu có, chỉ cần sử dụng tính năng của IntelliJ để gấp các bộ định tuyến/bộ định vị tầm thường và quên mất các dòng. tính năng Folding có thể được tìm thấy trong

Cài đặt -> Cài đặt IDE -> Editor -> Code Folding -> Show đang gấp phác thảo -> sở hữu đơn giản accessors

26

Tôi đang sử dụng IntelliJ IDEA 14.1.0 và bạn có thể tùy chỉnh hành vi này.

Chỉ cần sử dụng tùy chọn "Tạo ..." hoặc sử dụng Alt + Chèn phím tắt và chọn "Getter và Setter".

Trong cửa sổ "Chọn trường" được mở, bạn có tùy chọn "Mẫu tốt hơn" ở trên cùng. Sử dụng nút "..." bên cạnh trình đơn thả xuống để chỉnh sửa mẫu.

Chọn "IntelliJ Default" và nhấp vào nút "Sao chép" để tạo tên mới có tên "AlwayStartWithGet", bạn có thể chỉnh sửa.

Chỉ cần loại bỏ các phần sau:

#if ($field.boolean) 
    #if ($StringUtil.startsWithIgnoreCase($name, 'is')) 
    #set($name = $StringUtil.decapitalize($name)) 
    #else 
    is## 
#end 
#else 
    get## 
#end 

Và thay thế nó với một đơn giản

get## 

Bạn chỉ nên để:

publiC## 
#if($field.modifierStatic) 
    statiC## 
#end 
$field.type ## 
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) 
get## 
${name}() { 
    return $field.name; 
} 

Bây giờ bạn có thể sử dụng các mẫu tùy chỉnh khi tạo mã, bằng cách chọn nó trong trình đơn mẫu getter.

+0

Điều này có vẻ đầy hứa hẹn nhưng tôi không thấy nút mẫu Getter ở đầu hộp thoại này. Sử dụng 14.0.2. – Gervase

+2

Làm việc cho tôi, nhưng để được chính xác phần cuối cùng của mẫu sẽ giống như: '$ {name}() {return $ field.name; } ' trong một dòng –

+4

Đảm bảo kiểm tra cũng Cài đặt/mã Kiểu/Java/Khối đơn giản trong một dòng và Phương thức đơn giản trong một dòng. Nếu không, định dạng tự động sẽ đặt các đường thẳng trở lại và bạn không thấy bất kỳ hiệu ứng nào sau khi sửa đổi mẫu ... – werner

3

Dành cho ý tưởng năm 2016.

mẫu Getter

Merge 3 dòng cuối cùng vào một dòng duy nhất:

${name}() { return $field.name; } 

mẫu Setter

Thêm băm kép (không có khoảng trắng) vào cuối của dòng dài nhất:

[...] ($field.type, $paramName) {## 

Merge 2 dòng cuối cùng vào một dòng duy nhất:

$field.name = $paramName; } 

Lưu ý: như nhận xét của @mindas, có thể bạn sẽ muốn thay vào đó là gấp tự động thị giác mà tôi không nhận được phiên bản.