具有通用和内部 classes 的模型 class 的继承
Inheritance of model class with generic and inner classes
我想实现继承层次结构:
Generic
由 Insurance
扩展,其中包含内部(非静态)class HouseInsurance
要扩展的通用 class
public abstract class Generic<T extends Generic> {
public Generic() {
entityClass = ((Class) ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));
}
}
Class 扩展泛型并嵌套 class 扩展外部(封闭)class Insurance
public class Insurance extends Generic<Insurance> {
public class HouseInsurance extends Insurance {
}
}
不幸的是,当我尝试创建内部 class 的实例时,出现错误:
ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
我想我应该添加到内部 class 声明参数类型。但是我不知道怎么做。
通用 class 由许多其他 class 扩展,并且有效。这是第一个inner继承class,所以我觉得有问题
请帮忙。
到目前为止,我只收到编译错误。
我不确定当您创建 HouseInsurance
class 的实例时 class 应该 entityClass
指代哪个?所以给出两种解决方案:
如果 entityClass
应该指向 HouseInsurance
class 而不是使用此代码:
public Generic() {
Type genericType = getClass().getGenericSuperclass();
if (genericType instanceof ParameterizedType) {
entityClass = ((Class) ((Class) ((ParameterizedType) genericType).getActualTypeArguments()[0]));
}
else {
entityClass = getClass().getSuperclass();
}
}
如果 entityClass
应该指向 Insurance
class 而不是使用它:
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);
}
对于所有这些类型的场景,请查看 TypeTools:
public Generic() {
entityClass = TypeResolver.resolveRawClass(Generic.class, getClass());
}
我想实现继承层次结构:
Generic
由 Insurance
扩展,其中包含内部(非静态)class HouseInsurance
要扩展的通用 class
public abstract class Generic<T extends Generic> {
public Generic() {
entityClass = ((Class) ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));
}
}
Class 扩展泛型并嵌套 class 扩展外部(封闭)class Insurance
public class Insurance extends Generic<Insurance> {
public class HouseInsurance extends Insurance {
}
}
不幸的是,当我尝试创建内部 class 的实例时,出现错误:
ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
我想我应该添加到内部 class 声明参数类型。但是我不知道怎么做。
通用 class 由许多其他 class 扩展,并且有效。这是第一个inner继承class,所以我觉得有问题
请帮忙。 到目前为止,我只收到编译错误。
我不确定当您创建 HouseInsurance
class 的实例时 class 应该 entityClass
指代哪个?所以给出两种解决方案:
如果 entityClass
应该指向 HouseInsurance
class 而不是使用此代码:
public Generic() {
Type genericType = getClass().getGenericSuperclass();
if (genericType instanceof ParameterizedType) {
entityClass = ((Class) ((Class) ((ParameterizedType) genericType).getActualTypeArguments()[0]));
}
else {
entityClass = getClass().getSuperclass();
}
}
如果 entityClass
应该指向 Insurance
class 而不是使用它:
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);
}
对于所有这些类型的场景,请查看 TypeTools:
public Generic() {
entityClass = TypeResolver.resolveRawClass(Generic.class, getClass());
}