尝试使用jdk.nashorn.internal.objects.annotations.Constructor注释构造函数时,“ @ Constructor不适用于构造函数”

时间:2019-03-31 14:00:41

标签: java intellij-idea constructor getter-setter

当我尝试在类的构造函数上使用注释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;
    }
}

1 个答案:

答案 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包,因此您可能不应该使用它。