符号“Class <! - ? - > ......”

时间:2014-11-19 13:53:50

标签: java syntax

我必须使用现有代码,但我没有找到这种符号的含义: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?但它并没有真正回答我的问题......

感谢您的回答=)

3 个答案:

答案 0 :(得分:3)

它与Class<?>无关。最后的三个点意味着最终的参数是一个varargs参数

有关详细信息,请查看Java documentationthis 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());

依此类推任意类型的参数。