java - 如何从 Class 对象获取泛型类型?

标签 java generics spring spring-mvc

假设有以下类

public class Message {
    // some code
}

以及 Spring Validator 实现(无需 Spring 知识)

public class MessageValidator implements Validator {

    public boolean supports(Class clazz) {
        if(clazz.isAssignableFrom(Message.class))
            return true;
        else if(<ANSWER>)
            return true;

        return false;
    }

    public void validate(Object command, Errors errorArray) {
        if(command instanceof List)
            for(Message message: (List) command)
                validateMessage(message);
        else
            validateMessage((Message) command);
    }

    public void validateMessage(Message message, Errors errorArray) {
        // do validation Message object
    }

}

通知支持方法。要在 中放入什么以支持消息列表 - List

问候,

最佳答案

通用类型参数信息(大部分)不会在运行时保留,因此您没有一种简单的方法来访问它。基本上,即使它说 List<Message>它仍然可能是 List<String> 。如果不检查所有元素,就无法区分这两者。

你能做的最好的事情就是看看它是否实现了 List 。欢迎使用类型删除。

关于java - 如何从 Class 对象获取泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391627/

相关文章:

java - 使用 Java 如何确定输入到数组中的 5 个数字是否连续?

java - Java中泛型模板的问题

generics - F# 从对象而非类型实例化泛型类型

java - 插入时出现 Hibernate 异常

java - Dagger 2 模块与子组件

java - 如何在没有 Maven 的情况下设置独立的 Junit 和 Mockito

java - Spring Roo - 如何在 RooService 注释中重写 boolean transactional()

generics - Swift - 泛型方法

java - Spring MVC MongoDB 集成

Spring Cloud zuul "path": "/actuator/routes" 404 not found