Xin chào có cách nào để biết tên lớp người gọi của một hàm, đặc biệt cho một ứng dụng Java-GWT không?Làm thế nào để biết lớp người gọi của một hàm
Trả lời
Thread.currentThread
không được hỗ trợ trong GWT (hãy nhớ rằng mã java được biên soạn để javascript), vì vậy đây là một bản sao có thể xảy ra:
How do you find out the caller function in JavaScript?
Trong GWT bạn muốn chỉ đơn giản là viết một wrapper jsni:
public static native void whosMyCaller() /*-{
$wnd.alert(arguments.callee.caller.toString());
}-*/;
Nó không thực sự khả thi trong GWT, vì trong mã chế độ sản xuất được tối ưu hóa rất nhiều với lớp lót và loại bỏ mã không thể truy cập được. Ví dụ. trong chế độ biên dịch, hầu hết các hàm không thuộc về bất kỳ lớp nào, vì GWT coi là định nghĩa lớp thừa. Về mặt lý thuyết, có thể tìm thấy lớp người gọi (nếu bạn cố gắng phân tích báo cáo biên dịch hoặc nếu thông qua JSNI), nhưng vì tối ưu hóa trong lớp, bạn sẽ nhận được rất nhiều kết quả lạ (ví dụ, ngay cả khi bạn chỉ gọi một số chức năng) lớp cụ thể, trong chế độ được biên dịch, bạn có thể thấy rằng nó được gọi trực tiếp từ phương thức nhập điểm onLoad)
Trong bytecode là nó có thể? – xybrek
Bạn có nghĩa là java? có thể thông qua Thread.currentThread(). getStackTrace() như những người khác đã nói. Trong DevMode, điều này cũng có thể xảy ra, nhưng tôi không chắc liệu class Thread có được cho phép trong DevMode hay không. Bạn có thể thử tạo một Ngoại lệ và phân tích stacktrace của nó. – jusio
- 1. Làm thế nào chúng ta có thể biết tên của hàm người gọi?
- 2. Làm thế nào để Tìm tất cả người gọi của một hàm trong C++?
- 3. Làm thế nào để gọi hàm tạo bên trong lớp?
- 4. Làm cách nào để biết một lớp là lớp nội bộ hay lớp người dùng?
- 5. Làm thế nào để viết một hàm gọi một hàm gọi data.table?
- 6. Làm thế nào để implictly gọi constructor của lớp cha
- 7. Làm cách nào để chuyển một hàm thành viên của lớp như một cuộc gọi lại?
- 8. Làm thế nào để tăng cường :: make_shared một người bạn của lớp học của tôi
- 9. C++: Làm thế nào để gọi một hàm tầng lớp phụ huynh từ bên ngoài
- 10. Làm thế nào để gọi một sự kiện tự động khi một hàm được gọi?
- 11. Python phân biệt hàm gọi lại là thành viên của một lớp như thế nào?
- 12. Javascript - Làm thế nào để bạn gọi một hàm bên trong một lớp từ bên trong lớp đó?
- 13. Làm thế nào tôi có thể viết một hàm C chung để gọi một hàm Win32?
- 14. Làm thế nào để gọi một lớp trợ giúp Magento
- 15. Làm thế nào để trình bày lớp tĩnh hoặc gọi hàm trong biểu đồ trình tự?
- 16. Làm thế nào để C# biết khi chạy một hàm tạo tĩnh?
- 17. Python - Làm thế nào để gọi một hàm trên một đối tượng động theo tên?
- 18. Làm thế nào để tìm một phụ huynh với một lớp đã biết trong jQuery?
- 19. Làm thế nào để một container biết khi nào một đứa trẻ đã gọi là InvalidateArrange?
- 20. Có cách nào để tìm ra những người gọi hàng đầu của một hàm C không?
- 21. Xác định "method_called" .. Làm thế nào để tạo một phương thức hook được gọi mỗi khi bất kỳ hàm nào của một lớp được gọi?
- 22. Làm cách nào để người gọi hàm biết liệu có sử dụng Tối ưu hóa giá trị trả lại không?
- 23. Hàm băm cho lớp do người dùng xác định. Làm thế nào để kết bạn? :)
- 24. Làm thế nào để gọi một hàm khi tôi bấm vào một jPanel (Java)?
- 25. Sử dụng Java Reflection, làm thế nào để có được hàm tạo của một lớp xác định một lớp dẫn xuất của hàm tạo là args?
- 26. Gọi đến lớp chủ sở hữu từ một người biết lắng nghe
- 27. Làm thế nào để biết rằng không có kết quả của một hàm có giá trị trả về?
- 28. Làm thế nào để tạo một bean Spring từ một hàm tạo lớp bên trong tĩnh?
- 29. Làm thế nào để gọi hàm WinAPI SetDllDirectory() trong Delphi?
- 30. C# Thừa kế: Làm thế nào để gọi hàm tạo lớp cơ sở khi tôi gọi hàm tạo lớp dẫn xuất
bản sao có thể có của [Java: Find Caller Class] (http://stackoverflow.com/questions/2887607/java-find- caller-class) –
Phản ánh và các API liên quan không được mô phỏng bởi GWT. Bạn cần phải tìm một cách khác để hoàn thành những gì bạn muốn. – Strelok