我想动态创建一个实现给定给定接口的类,并绑定该接口的类型参数。这是我的界面定义:
public interface Container<T> {}
我最初的想法是为此使用匿名类,如下所示:
public <T> Class<?> getContainerImplementationForType(Class<T> type) {
return new Container<T> { ... }.getClass();
}
但是,如果我检查返回的类对象,则此实现的类型参数T
不会绑定到作为type
传递的任何内容,但它仍然只是一个类型变量T
。
我有一个模糊的想法,为什么这不起作用,但我想知道如何实现我的目标。是使用ASM手动创建类型,ByteBuddy还是类似的方式去?我认为动态代理也不会起作用,因为在获取代理类时我找不到为Container
指定类型参数边界的方法。