通用超类和超类类型之间的区别

用户4018604:

我无法理解以下两个代码段之间的区别。有人可以帮我简单的解释吗?

首先,我不得不说我有许多类扩展了名为的超类BaseEntity,那么以下代码片段的区别,优点和缺点是什么?

// 1
public <T extends BaseEntity> T getName(T t) {
    return t;
}

// 2
public BaseEntity getName(BaseEntity t) {
    return t;
}
塔吉尔·瓦列夫(Tagir Valeev):

第一个代码段更灵活,因为它保留了的实际类型T假设您有一个子类:

class SubEntity extends BaseEntity {}

在第一种情况下,您可以编写:

SubEntity result = getName(new SubEntity());

但是在第二种情况下,您将需要强制转换:

SubEntity result = (SubEntity)getName(new SubEntity());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章