首页 > 解决方案 > java - 如何获取作为通用参数传递给Java函数的实体的字段?

问题描述

我有一个接收任何实体类的通用方法。我所有的实体都有一个 LocalDate 类型的 createDate 字段。我想访问并获取通用方法中的字段。该方法将是这样的

public static < T > List<Resource> printArray( List<T> entity) {
    for( T e : entity ) {
        LocalDate d = e.getCreateDate(); //Wrong
    }

我不想检查泛型参数的实例并对其进行类型转换,因为有很多实体,我希望代码尽可能少(因此是泛型函数)。我怎样才能做到这一点?

标签: javagenericsjava-8generic-programming

解决方案


您可以使用抽象方法创建接口getCreateDate()

interface IDate {
    LocalDate getCreateDate();
}

并假设您的所有实体都实现了此接口,您的方法将如下所示:

public static <T extends IDate> List<Resource> printArray(List<T> entity) {
    for(T e : entity ) {
        LocalDate d = e.getCreateDate();
    }
}

否则你不能保证你传入这个方法的实体有方法getCreateDate()

@VHS建议有反射解决方案


推荐阅读