首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java7菱形操作符转换编译错误

java7菱形操作符转换编译错误
EN

Stack Overflow用户
提问于 2014-11-24 11:27:20
回答 1查看 73关注 0票数 0

我想将当前代码转换为Java7 diamond operator。我有下面的正则表达式来查找和替换。

查找

代码语言:javascript
复制
new (\w+)<.+>

取代:

代码语言:javascript
复制
new $1<> 

问题是,它也被替换为匿名类。因此,我得到了编译错误。那么,如何编写避免内部类的正则表达式呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-24 11:39:04

试试这个:(?s)new (\w+)<.+>(\(.*?\);)

代码语言:javascript
复制
String test = "List<String> t = new ArrayList<String>();";
System.out.println(test.replaceAll("(?s)new (\\w+)<.+>(\\(.*?\\);)", "new $1<>$2"));

String test2 = "List<String> t = new ArrayList<String>(getList());";
System.out.println(test2.replaceAll("(?s)new (\\w+)<.+>(\\(.*?\\);)", "new $1<>$2"));

String test3 = "List<String> t = new ArrayList<String>(\n\tgetList(\n\t\tanotherMethod()\n\t)\n);";
System.out.println(test3.replaceAll("(?s)new (\\w+)<.+>(\\(.*?\\);)", "new $1<>$2"));

String test4 = "List<String> t = new List<String>(){ /* implementation */ };";
System.out.println(test4.replaceAll("(?s)new (\\w+)<.+>(\\(.*?\\);)", "new $1<>$2"));

String test5 = "List<String> t = new List<String>()\n{\n\t/* implementation */\n};";
System.out.println(test5.replaceAll("(?s)new (\\w+)<.+>(\\(.*?\\);)", "new $1<>$2"));

它打印:

代码语言:javascript
复制
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 */
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27103745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档