gpt4 book ai didi

java - 注释参数 - String[] 类型参数设置为字符串文字

转载 作者:行者123 更新时间:2023-12-02 12:14:53 25 4
gpt4 key购买 nike

了解How to set String Array in Java Annotation

我有一个查询,需要以下代码:

@Unfinished("Just articleware")
public @interface Unfinished {
public enum Priority {LOW, MEDIUM, HIGH}
String value();
String[] owners() default "";
Priority priority() default Priority.MEDIUM;
}

需要语法String[]owners()default{}。 Java 编译器如何允许 String[] 类型参数(owners)使用字符串文字语法("")?

最佳答案

正如注释中所标记的,注释键 owners 的默认值 "" 创建一个包含空字符串元素的数组。您还可以在其中放置一个字符串“default”,这将导致创建一个仅包含值“default”的数组

或者

{} 如果需要,仅用于空数组。

<小时/>

要测试这一点,您可以使用运行时保留策略将注释标记为:

@Unfinished("Just articleware")
@Retention(RetentionPolicy.RUNTIME) // mark with Runtime retention policy
public @interface Unfinished {
enum Priority {LOW, MEDIUM, HIGH}

String value();

String[] owners() default "";

Priority priority() default Priority.MEDIUM;
}

用这个注释一个类

@Unfinished(value = "")
public class AnnotatedClass {

public static void main(String[] args) {
System.out.println("");
}
}

然后使用Reflection获取Unfinished键的值,如下:

public static void main(String[] args) throws Exception {
System.out.println("Testing...");
Class<AnnotatedClass> obj = AnnotatedClass.class;
if (obj.isAnnotationPresent(Unfinished.class)) {
Annotation annotation = obj.getAnnotation(Unfinished.class);
Unfinished unfinished = (Unfinished) annotation;
System.out.println(Arrays.toString(unfinished.owners()));
}
}

关于java - 注释参数 - String[] 类型参数设置为字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46262939/

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