java - Spring AOP - 使用连接点获取泛型类类型(JAVA)

标签 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),它在运行时获取其值。 有办法做到这一点吗?

最佳答案

您想要的东西在 .NET 语言(如 C#)中是可能的,但由于泛型的实现方式,在 Java 中是不可能的。因为当时引入泛型时,向后字节(甚至源)代码兼容性是主要设计目标之一,因此由于type erasure,泛型类型信息在运行时不可用。 .

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

关于java - Spring AOP - 使用连接点获取泛型类类型(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112460/

相关文章:

java - @Controller 、 @RestController 和 @Component 在 Spring boot 多模块 maven 项目的子包中不起作用

java - 如何拆分类以使用多个@Controller

java - 有人能解释一下这个 Java 代码片段是如何工作的吗?

java - 将泛型参数绑定(bind)到 Class<?> 时未经检查的强制转换

c# - 在方法中推断类型参数

java - 带背景图片的抽屉导航

java - 在 Java 中使用随机枢轴进行快速排序

java - 为什么 Spring 的 MessageDigestPasswordEncoder 将 `{}` 放入盐中? javadoc 中的示例似乎不起作用

java - 将链表转换为类型化数组

java - JUnit测试: Unable to unmarshall element