java泛型嵌套_Java:嵌套递归泛型

本文探讨了在Java中遇到的泛型嵌套类实例化问题。作者在BaseEntity类中定义了一个getNewInstance()方法,旨在允许所有子类能够创建自己的新实例。然而,在实现过程中遇到了编译错误。示例展示了Collection类和Document类如何扩展BaseEntity,以及在尝试使用getNewInstance()方法时出现的问题。文章询问如何正确实现这一功能,并指出这是一个更广泛问题的简化示例。
摘要由CSDN通过智能技术生成

我有一组扩展一些基本实体的类.此集合中的类也可以相互扩展,从而创建嵌套层次结构.

我的目标是让所有类都可以访问创建自己的新实例的方法.我想在我的基本实体中实现此方法,以便所有扩展类继承此方法.

以下是为我的模式定义的三个示例类:

BaseEntity.java

public abstract class BaseEntity {

Class clazz;

public BaseEntity(Class clazz) {

this.clazz = clazz;

}

public E getNewInstance() throws IllegalAccessException,InstantiationException {

return clazz.newInstance();

}

}

Collection.java

public class Collection extends BaseEntity {

public Collection() {

super(Collection.class);

// compiler error: BaseEntity (java.lang.Class) in BaseEntity cannot be applied to

// (java.lang.Class)

}

public Collection(Class clazz) {

super(clazz);

}

}

Document.java

public class Document extends Collection {

public Document() {

super(Document.class);

}

}

有了这个设置,我希望能够做到这样的事情:

Collection c = new Collection();

c = c.getNewInstance(); // compiler error

Document d = new Document();

d = d.getNewInstance();

Collection cd = new Document();

cd = cd.getNewInstance(); // compiler error

但请注意,Collection.java的默认构造函数中存在编译器错误.我不确定为什么会造成这种情况,我认为这也会导致示例main方法中的编译器错误.我做错了什么,如何解决这个问题?

请注意,这是一个人为的例子,涉及我正在努力解决的更大问题.我知道这个实现本身看起来很傻.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值