Spring AOP - 使用joinpoint获取泛型类类型(JAVA)

时间:2014-09-30 03:47:52

标签: java spring generics aop spring-aop

我试图在Spring AOP中使用JoinPoint获取类的泛型类型。但似乎没有办法做到这一点。 这是我正在拦截其方法的类。

public abstract class AbstractHibernateDaoBase<T, ID extends Serializable> implements BaseDao<T, ID>, PersistenceAware { //Some methods }

我能够拦截这些方法并执行建议。但我需要的是 T 类型(使用AOP),它在运行时获取其值。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您希望在C#等.NET语言中实现所需,但由于实现了泛型,因此不能在Java中实现。因为当时泛型被引入后向字节(甚至是源代码)代码兼容性是主要设计目标之一,所以由于type erasure,泛型类型信息在运行时期间不可用。

底线:不可以,除了创建T对象作为变通方法(或使用现有的对象)并通过myT.getClass()确定其类型之外,您无法通过任何其他方式在运行时确定T或myT instanceof Foo