Làm cách nào để tìm một lớp bên trong ẩn danh nếu tôi chỉ được cho biết tên của lớp Class$N
khi sử dụng Eclipse, mà không phải trải qua mã và đếm từng lớp ẩn danh? Có tính năng 'chuyển sang khai báo lớp ẩn danh' ở nơi tôi có thể nhập số hậu tố $?
Tính năng tìm kiếm-> Java không hữu ích.
Tôi đang sử dụng VisualVM để tìm các điểm nóng CPU. Điểm phát sóng của tôi nằm trong một lớp ẩn danh có tên SomeClass $ 5. VisualVM không thể tìm thấy nguồn cho lớp của tôi và tôi (và những người khác) không thể tìm thấy cách đính kèm nguồn vào VisualVM, được hiển thị here và here. Plugin trình khởi chạy không giải quyết vấn đề này. Việc đếm các khai báo ẩn danh không phải là một lựa chọn vì trong dài hạn, nguy cơ lỗi của con người phân loại qua hàng trăm dòng có thể dẫn đến lãng phí rất nhiều thời gian khi cố gắng làm việc trên lớp vô danh chỉ để tìm ra lớp sai.
Để giải quyết sự cố, tôi đang thử nghiệm các lớp học với 'System.out.println("this="+this.getClass().getName());'
trong một phương pháp để đảm bảo nó là đúng, nhưng phải có cách tốt hơn.
Câu hỏi hay. Tôi biết hai cách: Đếm (dễ bị lỗi) và đặt tên cho lớp (tức là biến một lớp ẩn danh thành một lớp bên trong), loại đó phá hủy lợi ích của lớp ẩn danh. Plus khi tôi nghĩ về Java 8 ... nên có một cách tốt hơn. –
Hai cách khác để tìm khai báo: 'Class.forName (" SomeClass $ 5 ") getEnclosingClass/Method/Constructor()' (nhưng có thể không rõ ràng nếu có nhiều lớp ẩn danh trong cùng phạm vi). 'javap -v SomeClass $ 5.class' và kiểm tra các thuộc tính LineNumberTable của các phương thức (nhưng có thể không có mặt nếu các tệp .class được biên dịch mà không có thông tin gỡ lỗi hoặc bị làm xáo trộn). (Những điều này không giúp Eclipse hoặc VisualVM tìm mã của bạn một cách tự động, và vì vậy đừng trả lời câu hỏi như đã đặt ra.) –
Chỉ cần thông tin về YourKit Java Profiler: "... Hãy lưu ý khả năng cực kỳ hữu ích để xác định vị trí mã của các lớp ẩn danh và phương pháp của chúng, đó là một việc rất khó thực hiện một cách thủ công. " [link] {https://www.yourkit.com/docs/80/help/eclipse.jsp} –