【问题标题】:Generic annotation of arrays in JavaJava中数组的通用注释
【发布时间】:2020-05-03 19:07:41
【问题描述】:

我在 twitter 上找到了这个 sn-p 的代码,我很难理解这里发生了什么,我只能看到这段代码的 OP 正在创建一个注释,我还可以看到 OP 使用数组这段代码中的数组,也使用泛型:

class Woww {
    @Wow Wow @Wow [] @Wow [] wow(@Wow Wow[] wow@Wow[])@Wow[]@Wow[] {
        return new Wow@Wow[]@Wow[]@Wow[]@Wow[]{
            {wow}
        };
    }
}

@Target({ElementType.TYPE_USE})
@interface Wow {
}

您能否向我解释一下这段代码到底发生了什么,以及我们如何在一个简单的例子中使用它, 谢谢

【问题讨论】:

  • 大吃一惊......这是有效的代码,令人难以置信

标签: java arrays generics


【解决方案1】:

这里有两个技巧:

类型使用注解实例

首先,从 Java 8 开始,类型的 use 可以使用注解进行注解,并且此包括单独的数组维度。来自Java Language Specification, 10.1

数组类型中的每个括号对都可以通过类型注释进行注释(第 9.7.4 节)。注释适用于其后的括号对(或省略号,在变量参数声明中)。

数组维度的放置

其次,根据Java Syntax数组维度,返回类型可以放在返回类型和参数列表之后,对于单个变量也是如此。

示例

这意味着像这样的代码(方法的参数声明):

@Wow Wow[] wow@Wow[]

等同于:

@Wow Wow[]@Wow[] wow

一旦方括号与元素类型分组,其中数组类型和内部维度用@Wow注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2012-04-16
    • 2015-02-12
    • 1970-01-01
    • 2019-01-16
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多