0

在 IntellJ Idea 项目中是否有一种方法可以用当前类名 + .class 替换对 getClass() 的所有调用?

因此,例如替换:

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

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

1 回答 1

6

试试这个结构搜索模板:

$This$.getClass()

编辑变量 -> 这个 -> 文本/正则表达式:这个,最小计数:0,最大计数:1

替换模板

$Clazz$.class

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

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

UPD: JetBrains 支持:新的结构搜索和替换 (SSR) 对话框当前不支持此功能。可以通过返回旧 UI 来执行此操作,方法如下:

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

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

于 2017-03-01T11:20:42.020 回答