gpt4 book ai didi

java - 具有泛型和内部类的模型类的继承

转载 作者:行者123 更新时间:2023-11-30 08:12:48 25 4
gpt4 key购买 nike

我想实现继承层次结构:GenericInsurance 扩展,其中包含内部(非静态)类 HouseInsurance

要扩展的通用类

public abstract class Generic<T extends Generic> {
public Generic() {
entityClass = ((Class) ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));
}
}

扩展泛型并具有扩展外部(封闭)类 Insurance 的嵌套类的类

public class Insurance extends Generic<Insurance> {
public class HouseInsurance extends Insurance {
}
}

不幸的是,当我尝试创建内部类的实例时出现错误:

ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

我想我应该添加到内部类声明参数类型。但是我不知道怎么做。

通用类由许多其他类扩展并且有效。这是内部类的第一次继承,所以我认为有问题。

请帮忙。到目前为止,我只收到编译错误。

最佳答案

我不确定当您创建 HouseInsurance 类的实例时,entityClass 应该引用哪个类?所以给出两种解决方案:

如果 entityClass 应该指向 HouseInsurance 类而不是使用此代码:

public Generic() {
Type genericType = getClass().getGenericSuperclass();
if (genericType instanceof ParameterizedType) {
entityClass = ((Class) ((Class) ((ParameterizedType) genericType).getActualTypeArguments()[0]));
}
else {
entityClass = getClass().getSuperclass();
}
}

如果 entityClass 应该指向 Insurance 类而不是使用它:

public Generic() {
Class cClass = getClass();
do {
Type genericType = cClass.getGenericSuperclass();

if (genericType instanceof ParameterizedType) {
entityClass = ((Class) ((Class) ((ParameterizedType) genericType).getActualTypeArguments()[0]));
}
else {
cClass = cClass.getSuperclass();
}
} while (entityClass == null);
}

关于java - 具有泛型和内部类的模型类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com