是否可以使用 Java 注释更改方法可见性?

Is it possible to change method visibility using Java annotations?

IntelliJ 将我在反射库中使用的一些函数变灰。我想通过注释例如阻止它们变灰@MyAnnotation。但到目前为止,我找不到办法做到这一点。到目前为止,我的自定义注释如下所示:

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 MyAnnotation {

}

我是否可以将默认注释添加到我自己的注释中,以阻止 IntelliJ 将我的注释方法灰显?

我注意到 JavaFX 不会将带有 @FXML 注释的函数变灰,

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface FXML {
}

但我在那里看不到任何我尚未使用的内容。

未使用的检查是 IntelliJ 的一项功能,其他 IDE 也可能具有该功能,但没有真正定义 used/unused 的含义。

此外,它不是语言功能,因此,在 java 中不支持将事物定义为 "used" 或 "unused"。 这是对当前代码库的解释,或者如果某些东西正在使用则更好"search scope"。

例如,仅在测试用例中使用方法的事实可能会被解释为未使用。

回答你的问题。您有 3 种不同的方法来解决该问题:

  1. 只需用 SuppressWarnings("unused")
  2. 注释该声明
  3. 使用 IntelliJ "Suppress unused warnings if annotated by" 功能
  4. 禁用未使用的代码检查

第一种方法是立即适用于其他开发人员的方法,也是最明确的方法。这将适用于 Eclipse 以及其他 IDE。不用解释,用SuppressWarnings("unused")注解的声明是在当前搜索范围之外使用的。 澄清一下:这可能看起来像是一种语言支持,用于将事物声明为已使用,但该注释是对开发人员的提示。 @SuppressWarnings 是纯源注释,在编译或运行时不可用。

第二种方法仅适用于您的机器,除非您将项目设置也导出到您的代码存储库中,并且其他开发人员也使用 IntelliJ。 此处解释了该方法:

第三个只是..好吧..这是一个选择。

下一个问题:这对 @FXML 有何影响?

我不确定,但我想这是一个 plugin/IntelliJ 功能。模拟从 class 成员和方法到 jxml 文件中特定元素的绑定的装订线图标也是该插件的一个功能。