【发布时间】:2017-02-07 07:22:07
【问题描述】:
我有一个 ModelDecorator 助手。我希望它具有以下公共 API
class ModelDecorator<T>{
public static <T> ModelDecorator<T> create(Class<T> clazz);
public <SUPER> T from(SUPER fromInstance);
}
所以,给定类 A,B 扩展 A,它可以这样使用:
A a = new A();
B b = ModelDecorator.create(B.class).from(a);
但我想限制 T 和 SUPER,所以我确保只有子类可以使用 API 实例化。此刻,我可以做到:
C c = new C();
B b = ModelDecorator.create(B.class).from(c);
其中 B 不继承自 C。
有什么想法吗?谢谢
【问题讨论】:
标签: java contravariance