我无法理解以下两个代码段之间的区别。有人可以帮我简单的解释吗?
首先,我不得不说我有许多类扩展了名为的超类BaseEntity
,那么以下代码片段的区别,优点和缺点是什么?
// 1
public <T extends BaseEntity> T getName(T t) {
return t;
}
// 2
public BaseEntity getName(BaseEntity t) {
return t;
}
第一个代码段更灵活,因为它保留了的实际类型T
。假设您有一个子类:
class SubEntity extends BaseEntity {}
在第一种情况下,您可以编写:
SubEntity result = getName(new SubEntity());
但是在第二种情况下,您将需要强制转换:
SubEntity result = (SubEntity)getName(new SubEntity());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句