我们说我有一个班级class Foo : Base
,我想用签名执行某个方法调用
public void someStuf(Iterable<? extends Base> param)
对于搜索模板,我只是将预先存在的一个
作为起点$Instance$.$MethodCall$($Parameter$)
是否可以匹配特定Iterable
子类(此示例中为Base
)的任何种 Foo
的参数???
List<Foo> fooList = new ArrayList<>();
fooList.add(new Foo("A"));
List<Bar> barList = new ArrayList<>();
barList.add(new Bar(1));
someStuff(fooList); // find this!
someStuff(barList); // don't find this one
someStuff(Collections.singletonList(new Foo("B"))); // also match this one
我尝试了几种没有运气的组合,甚至可以做到吗?
答案 0 :(得分:1)
如果不诉诸黑客,目前这是不可能的。诀窍是使用脚本约束:
$Instance$.$MethodCall$($Parameter$)
$Instance$
分钟/最大点数:0,1
$MethodCall
text / regexp:someStuff
$Parameter$
脚本文字:__context__.type.parameters[0].presentableText.contains("Foo")
,表达类型:List
我已提交a bug report。