如何将@IntDef注释类型作为函数参数传入



我有一个定义为的注释类型

@IntDef({
MOOD.HAPPY,
MOOD.SAD,
})
public @interface MOOD {
int HAPPY = 0,
int SAD = 1,
}

现在我有一个定义为的函数

SomeFunctionName(MOOD mood) {
doingSomething...
}

我不知道如何将MOOD值传递给这个函数。编译器总是抱怨类型无法转换例如,我尝试了

SomeFunctionName(MOOD.HAPPY)
SomeFunctionName(0)

您的函数SomeFunctionName被声明为接受MOOD,但您试图传递一个整数。

这编译得很好:

@interface MOOD1 {
int HAPPY = 0;
int SAD = 1;
}
interface MOOD2 {
int HAPPY = 0;
int SAD = 1;
}
public class SO67518698 {
void m1(MOOD1 mood) {}
void m2(MOOD2 mood) {}
void m3(int x) {}
void client() {
m3(MOOD1.HAPPY);
m3(0);
}

您还应该考虑是尝试定义接口(使用interface(还是注释(使用@interface(。

最新更新