gpt4 book ai didi

java - IDEA 结构搜索实现特定方法而不是其他方法的类

转载 作者:行者123 更新时间:2023-12-02 12:50:55 25 4
gpt4 key购买 nike

在我们的代码库中,我正在寻找给定类的匿名子类,这些子类实现一个特定方法并且没有其他方法或字段。这些可以转换为 lambda 表达式并消除对该匿名子类的需要。

我想出的搜索模板如下所示:

new SimpleListSubstitution<$Type$>() {
@Modifier Iterable<$Type$> getItems() {
return $EXPRESSION$;
}
}

替换模板是这样的:

SimpleListSubstitution.forItems(() -> $EXPRESSION$)

现在这个表达式找到了我想要重构的所有实例,而且它还找到了还实现其他方法(辅助方法或从父类(super class)重写的方法)的子类。

作为示例,我希望它在此代码中找到子类:

template.put("pathToRoot", new SimpleListSubstitution<Page>() {
@Override
protected Iterable<Page> getItems() {
return listOfPagesToRoot;
}
});

这将被转换为以下内容:

template.put("pathToRoot", SimpleListSubstitution.forItems(() -> listOfPagesToRoot));

但我确实希望它在这段代码中找不到子类,因为有额外的 putAdditionalSubstitutions 方法:

template.put("children", new SimpleListSubstitution<Page>() {
@Override
protected Iterable<Page> getItems() {
return getChildren(page, booleanFeatureName);
}

@Override
protected void putAdditionalSubstitutions(Template template) {
template.put("link", /*...*/);
}
});

有没有办法在搜索/替换对话框中表达“没有其他方法”?

目前我只看到在“查找” View 中检查每个命中并删除不需要的命中并替换其余命中的方法。由于我们需要多次应用此重构和类似的重构(例如处理同时编写的新代码),因此这变得相当费力。

最佳答案

您可以使用如下搜索模板:

new SimpleListSubstitution<$Type$>() {
@Override
protected Iterable<$Type$> getItems() {
return $EXPRESSION$;
}
$ReturnType$ $Method$($ParameterType$ $Parameter$);
}

具有以下变量设置:
方法最小值:0,最大值:0
参数最小值:0,最大值:无限制

请注意,此模式尝试匹配其他方法,但由于 Method 设置为 0 次出现,因此如果找到方法,匹配将会失败。这样,只有未定义其他方法的类才会出现在搜索结果中。

关于java - IDEA 结构搜索实现特定方法而不是其他方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44615635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com