2010-08-19 22 views
13

Tôi muốn chọn một Iterable, nhấn Alt + Shift + Z để có được trình đơn ngữ cảnh "Surround With", và có một mẫu foreachwrap hiển thị sẽ quấn lựa chọn trong a cho mỗi vòng lặp với định dạng thích hợp.Eclipse mẫu để gói một lựa chọn lặp lại trong một cho mỗi vòng

Ví dụ, tôi muốn chọn

someObject.getSomeList() 

và tạo này

for (SomeListType someListType : someObject.getSomeList()) { 

} 

Tôi đã thử một cái gì đó như thế này, nhưng nó dường như không làm việc:

for(${t:elemType(ls)} ${:name(t)} : ${ls:line_selection}) 
{ 
    ${cursor} 
} 
+6

Tôi sẽ kiểm tra điều đó. Ngoài ra, bạn có thể nhập "foreach", nhấn Ctrl-Space và chọn đề xuất "foreach - iterate over a array hoặc Iterable" và nó sẽ tạo mã từ mẫu "foreach", sử dụng biến Iterable hoặc mảng được tham chiếu cuối cùng . – Ladlestein

+0

Tôi khuyên bạn nên đăng bài này dưới http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates để tránh trùng lặp. Đối với câu hỏi, tôi là loại đáng ngờ. Thông tin loại chung không được giữ lại trong bytecode, thiếu thông tin sẽ cản trở giải pháp. Tôi thực sự tò mò muốn xem câu trả lời! – questzen

+0

@questzen Thông tin kiểu chung (ít nhất là cho các lớp và chữ ký phương thức) được giữ lại trong bytecode, hoặc trình biên dịch Java khác không thể sử dụng nó. Tuy nhiên, thông tin chung không được sử dụng trong thời gian chạy. –

Trả lời

5

Sử dụng QuickFix (Ctrl+1 trên Win/Lin hoặc Cmd+1 trên máy Mac).

Bạn có thể nhận các hành vi mong muốn với cách tiếp cận sau:

  1. Viết báo cáo kết quả trả về bộ sưu tập iterable, ví dụ

    someObject.getSomeList() 
    
  2. Nhấn Ctrl+1 (Cmd+1 trên Mac) và chọn Assign statement to a new local variable (thậm chí còn có một sự kết hợp trực tiếp cho hành động này (Cmd + 2 L trên máy Mac), tuy nhiên, nếu bạn muốn sử dụng nó, nó có thể phụ thuộc vào bao nhiêu kết hợp khác nhau làm bạn muốn ghi nhớ)

  3. Viết không quá

    fore 
    

    và nhấn Ctrl+1 (Cmd+1) một lần nữa, sau đó chọn Iterate over an array or iterable (chỉ cần nhấn Enter ngay sau khi menu QuickFix xuất hiện thường là đủ vào thời điểm này) và bạn sẽ có được một cái gì đó như thế này:

    for (Content content : someList) { 
    
    } 
    

Bây giờ bạn có thể thậm chí inline sử dụng các biến cục bộ để thoát khỏi nó một lần nữa (sử dụng QuickFix tất nhiên;). QuickFix thực sự mạnh mẽ, tôi hầu như không bao giờ sử dụng bất kỳ mẫu nào kể từ khi tính năng đó được xuất bản.

+0

Vâng, đó là những gì tôi làm bây giờ. Đã hy vọng cho một cái gì đó tốt hơn. Đoán là không. –

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