首页 / JAVA / java泛型类层次结构和泛型实现
java泛型类层次结构和泛型实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java泛型类层次结构和泛型实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1730字,纯文字阅读大概需要3分钟。
内容图文
![java泛型类层次结构和泛型实现](/upload/InfoBanner/zyjiaocheng/746/b87d05e5137e4115b8ff387058aaff87.jpg)
这可能是一个愚蠢的问题,但我无法理解为什么下面的编译失败了.
我的班级层次结构
Dao.java
public interface Dao<E extends Entity, S extends SearchCriteria> {
<E> E create(E e) throws Exception;
}
这个Dao有一个通用的实现
DaoImpl.java
public abstract class DaoImpl<E extends Entity, S extends SearchCriteria> implements Dao<E, S> {
@Override
public <E> E create(E e) throws Exception {
throw new UnsupportedOperationException("this operation is not supported");
}
}
然后有专门的实施
ProcessDaoImpl.java
public class ProcessDaoImpl extends DaoImpl<Process, WildcardSearchCriteria> {
@Override // this is where compilation is failing, I get the error that create doesn't override a superclass method
public Process create(Process entity) throws Exception {
return null;
}
}
实体类层次结构的描述
Process.java
public class Process extends AuditEntity {
// some pojo fields
}
AuditEntity.java
public abstract class AuditEntity extends IdentifiableEntity {
// some pojo fields
}
IdentifiableEntity.java
public abstract class IdentifiableEntity extends Entity {
// some pojo fields
}
Entity.java
public abstract class Entity implements Serializable {
}
解决方法:
因为你应该在接口和抽象类中声明,没有< E>的E create(E e)方法.在开头,否则你不会引用类中声明类型的E,而是引用在方法范围内定义的E类型:
替换:
public interface Dao<E extends Entity, S extends SearchCriteria> {
<E> E create(E e) throws Exception;
}
通过
public interface Dao<E extends Entity, S extends SearchCriteria> {
E create(E e) throws Exception;
}
并取代:
@Override
public <E> E create(E e) throws Exception {
throw new UnsupportedOperationException("this operation is not supported");
}
通过:
@Override
public E create(E e) throws Exception {
throw new UnsupportedOperationException("this operation is not supported");
}
内容总结
以上是互联网集市为您收集整理的java泛型类层次结构和泛型实现全部内容,希望文章能够帮你解决java泛型类层次结构和泛型实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。