2008-09-18 32 views
35

Tôi thường tái cấu trúc mã đầu tiên bằng cách tạo một lớp bên trong bên trong lớp mà tôi đang làm việc - Khi tôi làm xong, tôi di chuyển toàn bộ tệp lớp. Điều này làm cho việc tái cấu trúc mã vào lớp mới cực kỳ dễ dàng vì A) Tôi chỉ xử lý một tệp duy nhất và B) Tôi không tạo tệp mới cho đến khi có ý tưởng hay về tên/tên (Đôi khi nó kết thúc nhiều hơn một lớp).eclipse có thể trích xuất một lớp thứ hai trong tập tin lớp vào tập tin riêng của mình

Có cách nào Eclipse có thể giúp tôi với bước chuyển cuối cùng không? Tôi chỉ có thể nói với nó những gì gói tôi muốn các lớp trong, nó có thể tìm ra tên tập tin từ tên lớp và thư mục từ gói.

Điều này có vẻ giống như một trình cấu trúc lại tầm thường và thực sự rõ ràng, nhưng tôi không thể tìm ra các thao tác gõ/cử chỉ/bất cứ điều gì để làm cho nó xảy ra. Tôi đã thử kéo, menu, menu ngữ cảnh và duyệt qua các phím tắt.

Bất kỳ ai biết điều này?

[sửa] Đây là các lớp "Cấp cao nhất" trong tệp này, không phải lớp bên trong và "Di chuyển" dường như không muốn tạo lớp mới cho tôi. Đây là cách khó mà tôi thường làm - liên quan đến việc đi ra ngoài, tạo ra một lớp học trống rỗng, quay lại và di chuyển. Tôi muốn làm toàn bộ điều trong một bước duy nhất.

Trả lời

43

Tôi xin lỗi vì tôi đã trả lời sai trước đây. Tôi kiểm tra lại, và nó không thực sự muốn bạn muốn. Tôi đã tìm thấy một giải pháp cho bạn, mặc dù, một lần nữa, trong 3.4.

Đánh dấu lớp, sao chép CTRL-C hoặc cắt CTRL-X, nhấp vào gói bạn muốn lớp học đi vào và dán, CTRL-V. Eclipse sẽ tự động tạo lớp cho bạn.

Chuyển đổi loại thành viên thành cấp cao nhất không hoạt động. Làm như vậy sẽ tạo ra một trường của lớp bên ngoài và tạo ra một hàm tạo lấy lớp bên ngoài làm tham số.

+0

Vì vậy, gần . Đó là chính xác những gì tôi muốn, nhưng dán là màu xám trong gói khi tôi làm điều đó. Tôi tự hỏi nếu phiên bản nhật thực của tôi quá cũ. 3.3.1.1? –

+0

Tôi chỉ thử nghiệm nó trong 3.3 và nó đã làm việc. Hmm ... có lẽ bạn đã bỏ lỡ việc sao chép lớp học? – scubabbl

+2

OK! Chỉ hoạt động trong Package Explorer, chứ không phải Navigator. Cảm ơn nhiều! –

0

có thể được thực hiện trong 2 refactorings:

  1. Chuyển đổi Thành viên loại to top mức

  2. Move

1

Kích chuột phải vào tên lớp (trong mã nguồn) và chọn Refactor -> Convert Convert Type thành Top Level. Tuy nhiên, nó không cho phép bạn chọn gói.

28

Trong Eclipse 3.6, bạn có thể làm: Refactor -> Move loại đến tập tin mới

+0

đã tạo công việc cho tôi, cảm ơn! –

+0

+1 Đây chính xác là những gì tôi đang tìm kiếm!Tôi đã tìm kiếm "lớp bên trong chiết xuất eclipse vào lớp ngoài", đây là câu hỏi đầu tiên xuất hiện, và đây là câu trả lời chính xác mà tôi cần. Cảm ơn! – vergenzt

1

Đối với IntelliJ IDEA/Android Studio: Refactor -> Move -> Di chuyển bên trong lớp MyInnerClass để cấp trên

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