Tôi muốn chụp các cuộc gọi đến một đối tượng giảLàm cách nào tôi có thể tìm thấy mục tiêu của tham chiếu phương thức Java8?
public interface Service {
public String stringify(Object o);
}
service = mockery.mock(Service.class);
mockery.allowing(service::stringify).with(42).will(() -> "42");
Vì vậy, bên allowing
Tôi có một Function<Object, String>
Có reflecto-kỳ diệu mà sẽ cho phép tôi tìm thấy những dịch vụ từ chức năng được tạo ra từ các tài liệu tham khảo phương pháp ?
public WithClause allowing(Function<T,R> f) {
Object myServiceBackAgain = findTargetOf(function);
....
}
Tôi biết rằng Chức năng sẽ luôn đến từ các tham chiếu phương pháp này, vì vậy tôi rất vui khi được truyền xuống nhiều như cần thiết.
Đây không phải là câu hỏi giống như liên quan Is it possible to convert method reference to MethodHandle? bởi vì, tốt cho một sự khởi đầu nó không phải là cùng một câu hỏi, chỉ trong một khu vực có liên quan. Và ngay cả khi tôi có thể có được một MethodHandle, tôi không thể có được mục tiêu từ nó.
Không ai nói rằng đây là cùng một câu hỏi. Có lẽ bạn nên đọc tin nhắn: “* Câu hỏi này đã có câu trả lời ở đây *”. Vì vậy, bắt đầu đọc câu trả lời *. Nó giải thích mọi thứ, vì vậy bạn không cần suy đoán xem liệu bạn có thể có được một MethodHandle hay không, đó không phải là vấn đề. Đó là * chỉ một tiêu đề *. – Holger
Có lẽ @ Holger, có thể là câu trả lời cho câu hỏi này, bạn muốn giải thích cách câu trả lời cho câu hỏi được liên kết trả lời tôi? Đặc biệt, nơi chức năng không phải là serializable. –
về cơ bản nó giải thích rằng nó không thể (ngoài thủ thuật serialization) và thậm chí nếu nó được, nó không làm những gì bạn mong đợi vì không có bảo đảm rằng một tham chiếu phương pháp trong mã nguồn của bạn kết thúc lên là một xử lý trực tiếp trên byte mức mã. Lưu ý thêm, có rất nhiều liên kết đến các câu hỏi liên quan để biết thêm thông tin. Đó là lý do tại sao tôi hướng đến câu hỏi đó thay vì trực tiếp đến ["Làm thế nào để có được MethodInfo của một tham chiếu phương pháp Java 8?"] (Http://stackoverflow.com/q/19845213/2711488) gần gũi hơn với từ ngữ của bạn nhưng cung cấp ít thông tin hơn trong các câu trả lời. – Holger