java泛型传递疑问
public class BaseView<T extends BaseDomain> implements Serializable
public abstract class AbstractEntityView<T extends EntityDomain> extends BaseView<EntityDomain>
public class UserView extends AbstractEntityView<User>我这样实现了View的泛型类继承关系,目的是在UserView中可是直接使用User,比如User类中有getUserName()方法,可以直接调用。可是现在的情况是User的方法我没办法用。只能强转成User类型然后再使用。
求解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
怎么给分?设为最佳答案可以给你分吗?
谢谢~!
谢谢!
看在我手写代码的份上 给点分吧
晓得了,细节决定成败啊。我搞了好久都没搞明白。。。
哈哈`` 明白就好, 有时间看看泛型的官方文档. 多了解下,你现在还停留在类泛型的层面上, 其实大多时候都用方法泛型.因为更加灵活! 对类的污染更加小. 还有 "?" 之类的.
在BaseView里面放BaseDomain是没用的. 只能看到BaseDomain的方法.
看不到User的. 你就记住一点就可以. User在哪里被泛型的. 就在那里面添加 T的instance.
所以应该在AbstractEntityView里添加.
下面是结构图,目的就是想在UserView不用强制转换类型就可以直接使用User类的方法。
代码太少. 搞不清楚关系. 能不能把具体代码粘出来.
嗯,是我想要的,我发现了你的实现和我的之间的一个区别,就是我在BaseView中放了一个protected的BaseDomain,在AbstractEntityView中没有放EntityDomain作为成员变量。然后放一个进入之后就可以了。我想知道为什么。。。有点儿没想明白。
看下是不是你想要的.