java泛型传递疑问

发布于 2021-11-14 05:31:15 字数 634 浏览 911 评论 12

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

冷默言语 2021-11-18 02:33:31

怎么给分?设为最佳答案可以给你分吗?

伴我心暖 2021-11-18 02:33:09

谢谢!

噩梦成真你也成魔 2021-11-18 02:32:45

看在我手写代码的份上  给点分吧

把回忆走一遍 2021-11-18 02:27:24

晓得了,细节决定成败啊。我搞了好久都没搞明白。。。

累赘 2021-11-18 02:27:13

哈哈`` 明白就好, 有时间看看泛型的官方文档. 多了解下,你现在还停留在类泛型的层面上, 其实大多时候都用方法泛型.因为更加灵活! 对类的污染更加小. 还有 "?" 之类的.

居里长安 2021-11-18 02:13:54

在BaseView里面放BaseDomain是没用的. 只能看到BaseDomain的方法.

看不到User的. 你就记住一点就可以. User在哪里被泛型的. 就在那里面添加 T的instance.

所以应该在AbstractEntityView里添加.

皇甫轩 2021-11-17 22:36:05

下面是结构图,目的就是想在UserView不用强制转换类型就可以直接使用User类的方法。

奈何桥上唱咆哮 2021-11-17 18:07:28

代码太少. 搞不清楚关系. 能不能把具体代码粘出来.

哑剧 2021-11-17 01:50:10

嗯,是我想要的,我发现了你的实现和我的之间的一个区别,就是我在BaseView中放了一个protected的BaseDomain,在AbstractEntityView中没有放EntityDomain作为成员变量。然后放一个进入之后就可以了。我想知道为什么。。。有点儿没想明白。

成熟的代价 2021-11-16 09:01:11
public class User extends EntityDomain{
 private String userName;
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getUserName() {
  return userName;
 }
}
public class AbstractEntityView<T extends EntityDomain> extends BaseView<EntityDomain> {

	private static final long serialVersionUID = 1L;
	protected T t;
}

public class UserView extends AbstractEntityView<User>{

	private static final long serialVersionUID = 1L;

	public static void main(String args[])
	{
		UserView v = new UserView();
		v.t.getUserName();
	}
}

看下是不是你想要的.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文