java7菱形运算符转换编译错误

java7菱形运算符转换编译错误,java,regex,java-7,Java,Regex,Java 7,我想将当前代码转换为Java7菱形运算符。 我有下面的正则表达式用于查找和替换 发现 new (\w+)<.+> 替换: new $1<> 问题是它是 匿名类也被替换。由于这个原因,我得到了编译错误。 那么如何编写避免内部类的正则表达式呢?试试这个:?snew\w+\.* 它打印: List<String> t = new ArrayList<>(); List<String> t = new ArrayList<>(

我想将当前代码转换为Java7菱形运算符。 我有下面的正则表达式用于查找和替换

发现

new (\w+)<.+>
替换:

new $1<> 
问题是它是 匿名类也被替换。由于这个原因,我得到了编译错误。 那么如何编写避免内部类的正则表达式呢?

试试这个:?snew\w+\.*

它打印:

List<String> t = new ArrayList<>();
List<String> t = new ArrayList<>(getList());
List<String> t = new ArrayList<>(
    getList(
        anotherMethod()
    )
);
List<String> t = new List<String>(){ /* implementation */ };
List<String> t = new List<String>()
{
    /* implementation */
};

想知道古玩们为什么要这样做。。编写新代码时,请使用新语法。保留旧代码原样,问题是我必须将所有现有代码转换成Java菱形运算符。大约有10000起事故。所以手工操作很乏味。问题是为什么?没有性能提升,可读性也没有真正的区别。。正则表达式可能并非在所有情况下都有效。不确定intelli的SSR是否有帮助。或尝试
List<String> t = new ArrayList<>();
List<String> t = new ArrayList<>(getList());
List<String> t = new ArrayList<>(
    getList(
        anotherMethod()
    )
);
List<String> t = new List<String>(){ /* implementation */ };
List<String> t = new List<String>()
{
    /* implementation */
};