Giả sử tôi có một lớp nhưLàm thế nào để tạo ra một giao diện tại Runtime
public class FooImpl
{
public void bar(){};
}
Có cách nào để tạo ra giao diện của nó trong thời gian chạy?
ví dụ:
public interface Foo
{
public void bar();
}
Tôi đã được nhìn vào Javasssist và sự thật là nó phản ánh rằng tôi quan tâm đến việc sử dụng giao diện cho (như Esko Luontola và Yishai nêu)
Vì vậy, tôi muốn có một giao diện mà xác định một tập hợp con các phương thức của lớp ban đầu để tạo proxy.
Tôi đã nhận ra có nhiều điều cần được quan tâm về như
- bạn nên tái sử dụng giao diện đó hoặc tạo một hình mới mỗi lần?
- Lớp proxy có hiệu quả là một thể hiện mới của loại java.lang.reflect.Proxy, điều này có thể gây ra các tác động tùy thuộc vào trường hợp sử dụng.
Điểm cuối cùng khiến tôi tự hỏi về cách một số khung công tác quản lý để xử lý việc này, chúng có sao chép sâu đối tượng không? chúng có đóng gói proxy bên trong cá thể ban đầu không?
Vì vậy, có thể nó dễ dàng hơn (mặc dù có thể không thanh lịch) để yêu cầu mã máy khách tạo giao diện cho lớp.
Tại sao bạn muốn thực hiện việc này? –
Vâng làm một giao diện trong thời gian chạy đánh bại mục đích của giao diện. –
@SteveB. Điều gì sẽ xảy ra nếu, ví dụ, tôi muốn bọc một pojo và có trình bao bọc thể hiện giao diện tương tự như pojo (không có giao diện lúc biên dịch)? –