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

标签 java android-studio intellij-idea annotations

IntelliJ 使我在 Reflection 库中使用的一些函数变灰。我想通过注释来阻止它们变灰,例如与@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 也可能具有该功能,但没有真正定义已使用/未使用的含义。

此外,它不是一种语言功能,因此,没有这种语言支持将 java 中的事物定义为“已使用”或“未使用”。 这是对当前代码库或更好的“搜索范围”的解释(如果某些内容正在使用)。

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

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

  1. 只需使用 SuppressWarnings("unused") 注释该声明
  2. 使用 IntelliJ“如果注释则禁止未使用的警告”功能
  3. 禁用未使用的代码检查

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

第二种方法仅适用于您的计算机,除非您将项目设置导出到代码存储库中,并且其他开发人员也使用 IntelliJ。 该方法的解释如下:IntelliJ suppress unused warning for API methods

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

下一个问题:@FXML 是如何工作的?

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

关于java - 是否可以使用 Java 注释来更改方法可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59541903/

相关文章:

java - 将包含对象的列表转换为多维数组

android-studio - Android Studio 中的 "Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [C:\Android\sdk]!"

java - 在屏幕处于 sleep 状态时运行命令 firebase

java - 编译项目(路径: ':backend' ,配置: 'android-endpoints')错误

spring - 基本测试类没有可运行方法错误

intellij-idea - 如何设置 Idea 折叠太长的字符串?

java - 将逗号分隔的字符串转换为没有中间容器的列表

java - 使用 Java Servlet 合并 Oracle 中的多个 BLOB 以下载到 .docx 文件中

java - Android 错误 : Attempt to invoke virtual. .. setOnClickListener(android.view.View$OnClickListener)' 空对象引用

java - Android studio 从 2.1 更新到 2.3 后出现错误(无法启动)