有一个通用的静态函数,我只有通用类型,有可能获得其中一个泛型的类吗?
这是我的代码:
public static <A extends ResultError, B, A1 extends ResultError, B1> Function1<Either<A, B>,
Either<A1, B1>> transformConnectorErrorVoToCommandError(Event event) {
return new AbstractFunction1<Either<A, B>, Either<A1, B1>>() {
@Override
public Either<A1, B1> apply(Either<A, B> parameter) {
if (parameter.isRight()) {
return mapsRightSide(parameter);
} else {
return mapsLeftSide(parameter, event, ${I NEED THE CLASS OF A HERE});
}
}
Either<A1, B1> mapsRightSide(Either<A, B> parameter) {
return right(parameter.right().get());
}
Right right(Object result) {
return new Right<>(result);
}
};
}
private static <A extends ResultError, B, A1 extends ResultError, B1> Either<A1, B1> mapsLeftSide(Either<A, B> parameter,
Event event,
Class<A1> outputErrorClass) {
initLazyMapperComponent();
A sourceError = parameter.left().get();
A1 destinyError = mapper.map(sourceError, outputErrorClass);
if (destinyError != null) {
return left(destinyError);
}
ExceptionUtil.throwNotHandledError(event, sourceError);
return null;
}
我在代码中需要的部分是${I NEED THE CLASS OF A HERE}
我知道在非静态函数中它是可能的,但不知道是否可以以静态方式完成。
问候。
答案 0 :(得分:2)
不,你不能在那里获得A
的课程。它在运行时都被删除了。
典型的选项是从A
的{{1}}实例的值中获取A
的类型。
或者将parameter
作为另一个参数传递。