Intellij 将 getClass() 替换为 ClassName.class

Intellij replace getClass() with ClassName.class

在 IntellJ Idea 项目中有没有一种方法可以用当前 class 名称 + .class?

替换对 getClass() 的所有调用

所以例如替换:

class ClassName{
  public method(){
    Logger.logDebug(getClass(), "Some information")
  }
}

class ClassName{
  public method(){
    Logger.logDebug(ClassName.class, "Some information")
  }
}

试试这个结构搜索模板:

$This$.getClass()

编辑变量 -> This -> Text/regexp:this,最小计数:0,最大计数:1

替换模板

$Clazz$.class

编辑变量 -> Clazz -> 脚本文本:

import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.PsiClass;
PsiTreeUtil.getParentOfType(__context__, PsiClass.class).getQualifiedName();

更新: JetBrains 支持: 新的结构搜索和替换 (SSR) 对话框目前不支持此功能。可以通过回到旧的 UI 来做到这一点,方法如下:

  1. 调用帮助 |查找操作... (Ctrl/Cmd+Shift+A)
  2. 键入 Registry 并调用 Registry... 操作
  3. 删除 ssr.use.new.search.dialog 键的复选标记并关闭对话框

现在当您调用 SSR 时,您将返回到旧对话框并且可以再次使用替换变量。计划在 2019.2 版本中恢复新 SSR 对话框的替换变量,但不能保证。