当我尝试在类的构造函数上使用注释jdk.nashorn.internal.objects.annotations.Constructor
时,出现编译错误,提示:
@Constructor不适用于构造函数
IntelliJ的屏幕截图:
有人知道它向我显示此错误的原因吗?
简化代码:
package passengers;
import jdk.nashorn.internal.objects.annotations.Constructor;
import jdk.nashorn.internal.objects.annotations.Getter;
public class Passenger {
private String name;
private Stop destination;
@Constructor //<-- here I see: @Constructor not applicable to constructor
public Passenger(String name) {
//..
}
@Getter //<- this works fine
public String getName() {
return name;
}
}
答案 0 :(得分:1)
IDEA绝对是正确的。
遇到这种情况时,首先要做的就是查看@Constructor
注释JavaDoc或source。你会看到的是
/**
* Specifies a specific method to be the JavaScript "constructor" function.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Constructor { ... }
此
@Target(ElementType.METHOD)
表示可以在方法上指定注释。
如果它与构造函数兼容,那么您会发现
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
无论如何,这都来自internal
包,因此您可能不应该使用它。