java – 通过将新类型指定为泛型的实际类型来扩展泛型有什么好处
发布时间:2020-12-14 05:10:26 所属栏目:Java 来源:网络整理
导读:我在某处看到了这种模式: class A extends BA {} 通过将新类型指定为泛型的实际类型,此结构对于扩展泛型有点不寻常.有什么用?这个模式有名字吗?有没有替代模式? 示例:https://code.google.com/p/selenium/wiki/LoadableComponent 跳转到:public class
我在某处看到了这种模式:
class A extends B<A> { } 通过将新类型指定为泛型的实际类型,此结构对于扩展泛型有点不寻常.有什么用?这个模式有名字吗?有没有替代模式? 示例:https://code.google.com/p/selenium/wiki/LoadableComponent 跳转到:public class EditIssue扩展了LoadableComponent< EditIssue> { 编辑: 解决方法
当然,OOP的答案是A是??B.如果A不是B而不是A应该只用B来构成B以利用B的功能.
据推测,B还有一些通用实现,它们利用了对泛型类型的限制. 另一个用例是B看起来像: abstract class B<T extends B<T>> { public T createCopy(T t); } 现在,子类可以实现createCopy,客户端代码可以安全地使用它而无需转换… class A extends B<A> { public A createCopy(A t) { return new A(t); //copy constructor } } 比较以上内容: abstract class B { public B createCopy(B t); } class A extends B { public B createCopy(B t) { //Is the copy an A or a different subtype of B? We don't know. return new A(t); //copy constructor } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |