我必须使用现有代码,但我没有找到这种符号的含义:Class<?>...
例如,它在方法中使用:
public static <T> HashSet<ConstraintViolation<T>> validate(Validator validator, T resource, Class<?>... groups) {
return (HashSet<ConstraintViolation<T>>) validator.validate(resource, groups);
}
并且这样称呼:
HashSet<ConstraintViolation<EntryDTO>> l = ValidationTools.validate(this.validator, entryDTO);
这是否意味着“团体”是期权? 我发现了这个有趣的主题:What does Class<?> mean in Java?但它并没有真正回答我的问题......
感谢您的回答=)
答案 0 :(得分:3)
它与Class<?>
无关。最后的三个点意味着最终的参数是一个varargs参数
有关详细信息,请查看Java documentation和this StackOverflow answer。
答案 1 :(得分:1)
您正确链接的第一个答案会告诉您Class<?>
的含义。 ...
称为varargs
,表示0或更多参数。因此,参数Class<?>...
表示任何类型的Class的任意数量的参数。
有关varargs
的详情,请参阅https://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
答案 2 :(得分:0)
类&LT;?&GT;表示此变量是任何类型的类对象。 这三个点意味着您可以在方法调用中传递任意数量的参数。
所以这是对ValidationTools.validate方法的所有有效调用:
ValidationTools.validate(this.validator, entryDTO);
ValidationTools.validate(this.validator, entryDTO, myString.getClass());
ValidationTools.validate(this.validator, entryDTO, myString.getClass(), myInteger.getClass());
依此类推任意类型的参数。