gpt4 book ai didi

Java 泛型问题 - Class 与 T?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:13 25 4
gpt4 key购买 nike

我正在使用 Hibernate validator 并尝试创建一个小实用程序类:

public class DataRecordValidator<T> {
public void validate(Class<T> clazz, T validateMe) {
ClassValidator<T> validator = new ClassValidator<T>(clazz);
InvalidValue[] errors = validator.getInvalidValues(validateMe);
[...]
}
}

问题是,为什么我需要提供 Class<T> clazz执行时的参数 new ClassValidator<T>(clazz) ?为什么不能指定:

  1. TClassValidator<T>(T)
  2. validateMe.getClass()ClassValidator<T>(validateMe.getClass())

当我尝试执行这两个选项时出现错误。

编辑:我明白为什么 #1 不起作用。但我不明白为什么#2 不起作用。我目前在 #2 中遇到此错误:

cannot find symbol
symbol : constructor ClassValidator(java.lang.Class<capture#279 of ? extends java.lang.Object>)
location: class org.hibernate.validator.ClassValidator<T>

注意:Hibernate API 方法是 ( here )

最佳答案

因为 T 不是一个值——它只是给编译器的一个提示。 JVM 不知道 T。您只能将泛型用作一种类型,以便在编译时进行类型检查。

关于Java 泛型问题 - Class<T> 与 T?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com