我已经在 Stack 上寻找了一段时间的答案。所有的答案看起来好像他们说我已经有了正确的答案,但我仍然不断收到下面构造函数中第一行的类转换异常。
SEVERE: Exception while loading the app : EJB Container initialization error
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
at com.domain.security.logging.ElsAbstractCrudClass.<init>(ElsAbstractCrudClass.java:54)
这是代码。在查看文档后,我仍然无法弄清楚。我对泛型和反射比较陌生,所以需要一些帮助。TIA。
public abstract class ElsAbstractCrudClass<T> {
Class<T> entity;
public ElsAbstractCrudClass() {
[line 54] ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
Type type = genericSuperclass.getActualTypeArguments()[0];
this.entity = (Class<T>) type;
}
}
这是抽象 crud 类的子类(SessionLog 是 JPA 实体):
@Stateless
public class SessionLogger extends ElsAbstractCrudClass<SessionLog> {
@PersistenceContext(unitName = "ELS_Soulard_PU")
private EntityManager em;
@EJB
DozerInstantiator di;
//SessionLog entity;
//SessionLog sessionLog = new SessionLog();
static final Logger logger = Logger.getLogger(SessionLogger.class.getSimpleName());
public SessionLogger() {
}
...