元素值必须是常量表达式
Element value must be a constant expression
我正在尝试为我的 Minecraft 客户端制作一个事件系统。完成后,我尝试 运行 它并遇到错误 element value must be a constant expression
。此错误来自文件 EventTarget,其代码为:
package me.debug.moon.event;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface EventTarget {
byte value() default EventPriority.THIRD;
}
行 byte value() default EventPriority.THIRD;
是给我错误的行。
如果有帮助,这里是我的 EventPriority 文件的代码:
package me.debug.moon.event;
public class EventPriority {
public static final Byte FIRST = 0, SECOND = 1, THIRD = 2, FOURTH = 3, FIFTH = 4;
public static final Byte VALUE_AARAY[] = new Byte[] {FIRST, SECOND, THIRD, FOURTH, FIFTH};
}
我在 Whosebug 中环顾四周,看到了一些这样的问题,但其中大部分是由于他们使用的库,并且是针对 Android Studio 的。
此外,我正在使用 Gradle 7.1(根据 gradle-wrapper.properties 文件)
我想知道是否有人可以帮我解决这个错误
在您的 EventPriority class 中,您使用 Byte(大写 B),它是一个对象。
你应该使用 byte(小写的 b),它是一个原语。
来自文档:https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
A compile-time constant expression is an expression denoting a value
of primitive type or a String
我正在尝试为我的 Minecraft 客户端制作一个事件系统。完成后,我尝试 运行 它并遇到错误 element value must be a constant expression
。此错误来自文件 EventTarget,其代码为:
package me.debug.moon.event;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface EventTarget {
byte value() default EventPriority.THIRD;
}
行 byte value() default EventPriority.THIRD;
是给我错误的行。
如果有帮助,这里是我的 EventPriority 文件的代码:
package me.debug.moon.event;
public class EventPriority {
public static final Byte FIRST = 0, SECOND = 1, THIRD = 2, FOURTH = 3, FIFTH = 4;
public static final Byte VALUE_AARAY[] = new Byte[] {FIRST, SECOND, THIRD, FOURTH, FIFTH};
}
我在 Whosebug 中环顾四周,看到了一些这样的问题,但其中大部分是由于他们使用的库,并且是针对 Android Studio 的。
此外,我正在使用 Gradle 7.1(根据 gradle-wrapper.properties 文件)
我想知道是否有人可以帮我解决这个错误
在您的 EventPriority class 中,您使用 Byte(大写 B),它是一个对象。
你应该使用 byte(小写的 b),它是一个原语。
来自文档:https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
A compile-time constant expression is an expression denoting a value of primitive type or a String