【问题标题】:What is parameterized invocation of Class什么是类的参数化调用
【发布时间】:2013-02-13 11:43:23
【问题描述】:

JLS 在第 9.6.1 节 (http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.6.1) 中说如下。

“如果在注解类型中声明的方法的返回类型不是以下之一,则为编译时错误:原始类型、字符串、类、对 Class 的任何参数化调用、枚举类型(第 8.9 节) )、注释类型或数组类型(第 10 节),其元素类型是上述类型之一。"

什么是“类的任何参数化调用”?有什么例子吗?

【问题讨论】:

    标签: java annotations jls


    【解决方案1】:

    从 Java 5 开始,java.lang.Class 类型是 generic,这意味着它可以有一个类型参数。通过参数化调用Class,文档意味着“Class<...> 带有任何类型的参数”。您可以在同一文档中找到它的示例,例如“示例 9.6.1-2”:

    interface Formatter {}
    
    // Designates a formatter to pretty-print the annotated class
    @interface PrettyPrinter {
        Class<? extends Formatter> value();
    //  ^^^^^^^^^^^^^^^^^^^^^^^^^^------------ Here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2011-06-10
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多