1

我最近开始使用 java 7,我想在现有代码中使用<> 菱形运算符。谁能告诉如何查找 ArrayList 的所有实例并将其替换为 ArrayList<>。

例如:

List<Integer> list = new ArrayList<Integer>();

会成为

List<Integer> list = new ArrayList<>();

Set对于and ,我也可以遵循相同的模式Map

4

2 回答 2

2

寻找([^\t (](List|Map|Set))<[^>]+>(区分大小写+正则表达式)并替换为$1<>(正则表达式)对我有用。

正则表达式:

([^\t (](List|Map|Set)): 除空格、制表符或左括号外的任何字符,后跟 List、Map 或 Set(匹配任何类型的集合)

  • ArrayList将匹配(即yList
  • LinkedList太(即dList
  • List不会(List 之前没有字符)

<[^>]+>: 以 开头,然后是除1 次或更多的<任何字符,然后>>

$1<>: 括号之间的字符,后跟<>

如何:

1) Ctrl+H

2)搜索

3)替换为

于 2012-09-10T09:09:55.173 回答
1

在上述 regEx 中进行一些修改后,以下工作正常:

([^( |^\t](List|Map|Set))<[^>]+>

sp00m 解决方案的问题是它会搜索

 access-modifier   return-type someFunction(List<something> list)

还。

例如:

void fun(List<Integer> ints)

所以我^(在初始比赛中添加了。

于 2012-09-10T10:11:09.140 回答