报告在 plugin.xml 文件中注册的任何操作,并在其构造函数中实例化 com.intellij.openapi.actionSystem.Presentation 对象。

任何带形参的 AnAction 的构造函数都会实例化 Presentation 对象。 但是,在构造函数中实例化 Presentation 对象会导致分配资源,这可能并非必要。 比起创建存储文本、描述或图标的 Presentation 实例,更有效的方式是利用 AnAction 和其他基类的无实参构造函数,并遵循在 plugin.xml 中设置文本、描述和图标的约定。 只有当操作实际显示在 UI 中时,IDE 才会加载文本、描述和图标。

设置文本、说明和图标的约定如下:

错误示例:


  // NewKotlinFileAction.kt
  internal class NewKotlinFileAction : AnAction(
    KotlinBundle.message("action.new.file.text"),
    KotlinBundle.message("action.new.file.description"),
    KotlinIcons.FILE
  )

  
  <action
    class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
  </action>

正确示例:


  // NewKotlinFileAction.kt
  internal class NewKotlinFileAction : AnAction()

  
  <action
    id="Kotlin.NewFile"
    class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
    icon="org.jetbrains.kotlin.idea.KotlinIcons.FILE">
  </action>

  # KotlinBundle.properties
  action.Kotlin.NewFile.text=Kotlin 类/文件
  action.Kotlin.NewFile.description=创建新的 Kotlin 类或文件

2023.2 最新变化