Java12新特性
12版本也是一个过渡版本
- 支持原生字符串,ts/js等语言早已支持,java再不支持就说不过去了,不过这个语法真的是方便,我预言Java12以后模版引擎将成为过去式。
- 转译支持
- 边距处理
原生字符串支持
Java中书写多行字符串和特殊转义字符时非常不方便和不直观,Java 12将会引入原生字符串(Raw String Literals)解决这一问题。
Java 12之前的写法:
String html = "<html>\n" + " <body>\n" +
" <p>Hello World.</p>\n" +
" </body>\n" + "</html>\n";
Java 12的写法:
String html = ` <html> <body> <p>Hello World.</p> </body> </html> `;
转义支持(Escapes)
为了原生字符串中使用转义字符,String class中增加了两个方法:
public String unescape()
public String escape()
以下结果都返回true:
boolean b0 = `\n`.equals("\\n"); boolean b1 = `\n`.unescape().equals("\n"); boolean b2 = `\n`.length == 2; boolean b3 = `\n`.unescape().length == 1;
边距管理(Margin Management)
为了处理多行字符串左边距的问题,String class中增加了两个方法:
public String align()
public String indent(int n)
align方法用来去掉开头和结尾的空白行,保持每行的相对缩进。
indent方法用来控制每行开头增加或减少几个空格,n为正数时增加,n为负数时减少。
通常会组合两者使用,align().indent(n)
,所以另外提供了一个组合方法:
public String align(int n)
其他特性见参考:https://openjdk.java.net/projects/jdk/12/