gpt4 book ai didi

java - 枚举静态数组和注解值混淆

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:14 25 4
gpt4 key购买 nike

我有枚举:

public enum Scope {
USER, GLOBAL;

public static final Scope[] TRANSIENT = {};
public static final Scope[] USER_OVER_GLOBAL = {GLOBAL, USER};
public static final Scope[] GLOBAL_OVER_USER = {USER, GLOBAL};
}

和注解:

public @interface Config {
public Scope[] load() default Scope.GLOBAL_OVER_USER; // Can't use this defval

public Scope[] save() default Scope.USER;
}

为什么我不能使用静态数组作为注释属性的默认值?我的 NetBeans 7.3 Beta 告诉我需要 Scope 但找到了 Scope[] - 如您所见,这不是真的。是否存在与 NB 或 Java 7 相关的混淆?

最佳答案

问题是 Scope[] GLOBAL_OVER_USER 并非都是常量。 (是的,数组本身是常量,但是您可以更改它的内容,例如 GLOBAL_OVER_USER[0] = GLOBAL;

解决方法是直接在注释声明中初始化数组:

public Scope[] load() default {USER, GLOBAL};

关于java - 枚举静态数组和注解值混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360164/

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