我在堆栈上寻找了一段时间的答案。所有的答案看起来像他们说我已经有了正确的答案,但我仍然继续在下面的构造函数中获得第一行的类抛出异常。类抛出异常泛型反射参数化类型
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() {
}
...
打印出'getClass()'和'getClass()。getGenericSuperclass()'来查看它们的效果可能很有用 – newacct 2012-07-21 02:38:30
好主意。我会在今天晚些时候尝试,也许或明天取决于时间...但我会尝试。 – BillR 2012-07-21 17:20:26
仅供参考......我的开发箱弹了一下,我正在重建......所以我还没有试过。 :) – BillR 2012-07-25 15:18:19