我正在尝试使用 Spring AOP 中的 JoinPoint 来获取类的泛型类型。但似乎没有办法做到这一点。 这是我正在拦截其方法的类。
public abstract class AbstractHibernateDaoBase<T, ID extends Serializable> implements BaseDao<T, ID>, PersistenceAware
{
//Some methods
}
我能够拦截这些方法并执行建议。但我需要的是类型 T (使用 AOP),它在运行时获取其值。 有办法做到这一点吗?
最佳答案
您想要的东西在 .NET 语言(如 C#)中是可能的,但由于泛型的实现方式,在 Java 中是不可能的。因为当时引入泛型时,向后字节(甚至源)代码兼容性是主要设计目标之一,因此由于type erasure,泛型类型信息在运行时不可用。 .
底线:不,除了创建一个 T
对象作为解决方法(或使用已有的现有对象)并通过 确定其类型之外,您无法在运行时通过任何其他方式确定 T >myT.getClass()
或 myT instanceof Foo
。
关于java - Spring AOP - 使用连接点获取泛型类类型(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112460/