java - 如果基类匹配条件,IntelliJ 结构搜索会查找派生类
问题描述
假设我有一个带有 field 的基类refCount
。我不小心创建了一个派生类,它还声明了一个同名的字段。(实际上,名称并不重要:重要的是类型,即ReferenceCount;但名称非常一致。)这是浪费内存,所以能够自动找到这些东西会很好。这可以通过结构搜索(或其他方式)来完成吗?
解决方案
看起来Java | Visibility | Field name hides field in superclass
检查所做的事情与您需要的类似。
如果你想用结构搜索来做到这一点,你可以做这样的事情。搜索模板:
class $X$ {
RefCount $f$;
}
并在“完全匹配”上添加以下“脚本”过滤器:
import com.intellij.psi.*;
for (PsiClass aClass : X.getSupers()) { // X refers to the template var $X$
for (PsiField field : aClass.getAllFields()) {
// compares the type of the super field with the type of field $a$
if (field.getType().equals(a.getType())) {
return true;
}
}
}
return false;
推荐阅读
- c - 包含的 .cpp 文件中的“未知类型名称 'size_t'”错误,但在包含的文件名更改为 .h 文件时删除。为什么?
- post - 无法通过 POST 请求获得预期的响应
- node.js - 为什么在 nodejs 中使用同步函数被称为“阻塞事件循环”?
- ios - 当本地通知在特定时间触发时如何在 xamarin ios 中播放警报音
- php - php如何将多维数组转换为单个数组
- postgresql-13 - 在 POSTGRES 中更改域检查
- xml - 每天更改 XML 文件中的几个单词
- javascript - 两个值之间的线性比例值
- webdriver-io - 如何在 webdriverIO 中获取父元素的父元素?
- flutter - 一个 RenderFlex 在底部溢出 260 像素。- ListTile