Intellij用ClassName.class替换getClass()

时间:2017-03-01 08:37:59

标签: java intellij-idea structural-search

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

例如,替换:

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

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

1 个答案:

答案 0 :(得分:4)

试试这个结构搜索模板:

$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支持: 目前,新的结构搜索&amp;替换(SSR)对话框。可以通过返回旧的UI来实现这一点,这里的方法如下:

  1. 调用帮助|查找操作...(Ctrl / Cmd + Shift + A)
  2. 键入注册表并调用注册表...操作
  3. 删除ssr.use.new.search.dialog键的复选标记并关闭对话框
  4. 现在,当您调用SSR时,您将返回旧对话框并再次使用替换变量。计划在2019.2版中恢复新SSR对话框的替换变量,但不能保证。