2013-06-07 245 views
23

Tôi đã thử tìm kiếm điều này, nhưng thành thật mà thuật ngữ tìm kiếm thực sự đang thoát khỏi tôi. Một đoạn mã nhỏ theo sau là câu hỏi.Intellij Code Completion cho tất cả các phương thức setter/getter của đối tượng biến cục bộ

Public class Person { 

    String firstName; 
    String lastName; 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 
    ... 
} 

Trong một đối tượng có sử dụng người này đối tượng Tôi muốn để có thể mở rộng tất cả các phương pháp setters trong Intellij.

public class PersonAssembler { 
    public static Person assemblePerson(SomeOtherObject someOtherObject) { 

    Person person = new Person; 

    //intellj would provide this below. 
    person.setFirstName(); 
    person.setLastName(); 
    //end of what intellj provides. 

    return person; 
} 

Điều này thậm chí còn có thể? Tôi đã xem xét thông qua việc cắt ngắn bàn phím, vv Tôi đã sử dụng intellij một thời gian, vì vậy chỉ cần tự hỏi nếu có ai đó có một số cái nhìn sâu sắc về điều này.

Tôi đã hy vọng cho chế độ chỉnh sửa cột, sau đó hoàn thành mã và có thể là mũi tên shift + xuống để chọn nhiều lần hoàn thành, nhưng không có may mắn. Điều đó không đáng ngạc nhiên. Tôi ghét phải viết rằng trong GUI.

Chỉnh sửa: Tôi đã thêm một số làm rõ và thành thật quên câu hỏi này. Câu trả lời không liên quan gì đến câu hỏi thực tế nếu đọc kỹ. Tôi không nói về menu ngữ cảnh Tạo ra.

+0

bạn có tìm thấy giải pháp cho điều đó không? tôi có cùng một câu hỏi ... tôi không muốn viết mã cho 40 người định cư trong một bài kiểm tra ..... – Paundl

Trả lời

8

Đây là một câu hỏi cũ, nhưng có lẽ nó giúp ai đó.

Ngoài ra, nó không phải là một hành động "nhấp chuột đơn", nhưng ...

bước để làm theo:

  • Đến tập tin Class
  • mở xem cơ cấu (bảng điều khiển bên trái)
  • Chọn tất cả các người định cư (sắp xếp theo bảng chữ cái nếu cần) và sao chép
  • Quay lại lớp/phương pháp đích của bạn
  • Dán sao chép
  • Chỉnh sửa (ở chế độ cột) để bao gồm person. ở đầu mỗi lớp và () ở cuối.
+1

Rất đẹp! Điều này thực sự rất sâu sắc và hoạt động rất tốt. Cảm ơn! –

12

Trong dự án của bạn, nhấp chuột phải vào bất kỳ đâu trên màn hình nhập và nhấp vào 'Tạo ...' và sau đó nhấp vào 'Getter và Setter'. Sau đó, giữ phím Ctrl và nhấp vào các trường bạn muốn tạo getters và setters cho, sau đó nhấp vào 'OK'.

+9

Anh ta dường như không muốn tạo ra getters/setters - anh ta muốn tạo ra các cuộc gọi setter trong lớp máy khách thay thế. –

+0

có cách nào để tự động hóa điều này không? không thể tìm thấy lối tắt sơ đồ bàn phím thích hợp. – Blauhirn

+0

Giải pháp tốt khi tạo một lớp cấu trúc giống như – Drakes

5

Tôi không chắc chắn làm thế nào để làm điều này trong IntelliJ, nhưng tôi sẽ liên kết bạn đến một khuôn khổ mà làm cho các loại điều nên trơn tru hơn nhiều trong Java: Dự án Lombok

lấy mã của bạn ví dụ, nó sẽ xem xét như thế này:

public class Person { 
    @Setter 
    @Getter 
    String firstName; 
    String lastName; 
} 

có một plug cho intellij sửa lỗi để bạn không nhận được bất kỳ cảnh báo gây phiền nhiễu nào.

http://projectlombok.org/

3

khi curser của bạn là bên trong lớp vừa tạo sau đó bạn có thể nhấn ALT + Insert - một hộp thoại sẽ xuất hiện và sau đó bạn có thể chọn Getter và Setter

enter image description here

+1

Trong 'Mac' là' Ctrl' + 'return' – zhuguowei

+0

có thể trong Intellij để thiết lập tùy chỉnh các phím tắt - tuy nhiên tôi thích mặc định – serup

6

Phím tắt để tạo bộ đặt getter là ALT+Insert trong Intellij.

+1

Cảm ơn. Giúp tôi. – parsecer

2

đây là plugin của tôi genSets

Foo foo = new Foo();

mã như thế này

foo.allSet

sẽ tạo

foo.setName(); 
foo.setAge(); 
foo.setBar(); 
foo.setTest(); 
foo.setLike(); 
+0

Nó có một plugin biên dịch cho điều này? – aristotll

+0

@aristotll Nếu bạn truy cập [release] (https://github.com/yoke233/genSets/releases) trên trang Github, bạn có thể tải xuống plugin đã biên dịch. – muenchdo

1

Plugin này có thể giúp GenerateAllSetter

Bấm CTRL + ENTER nơi bạn muốn sử dụng và nó sẽ tạo cuộc gọi setter cho bạn.