假设我有这个界面:
public interface Foo {
int getBar();
String getName();
// ... 10 other methods
}
然后我有这个类,我无法修改它:
public final class FooImpl {
int getBar();
String getFirstName();
String getLastName();
// ... 10 other methods which matches Foo
}
我需要将 FooImpl 中的值用于采用 Foo 的方法。手动编写包装器(例如通过匿名类)非常容易,它实现 Foo 并将所有内容转发到 FooImpl 中的相应方法(除了 getName() ,它需要 getFirstName 和 getLastName 的一些额外逻辑)。有没有一种方法(最好是来自像 Guava 这样的通用库)来动态创建这样的包装器,考虑到以下要求:
- 我想为一种或两种方法指定自定义逻辑
- 对于其余的,只需转发到具有相同名称的方法
最佳答案
有一个办法。如果您创建您的接口(interface)的对象引用,其中包含实现该接口(interface)的类的对象的引用。然后该对象引用就能够访问这些东西。
关于java - 从几乎与接口(interface)匹配的类动态创建实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109590/