版权声明:“假装、是个有灵魂的程序员” —— Go Big Or Go Home https://blog.csdn.net/u011663149/article/details/88428422
前言:
JDK 12版本中将出现的新API方法将于3月19日发布。与JEP-334: JVM Constants API. 有关。
String#indent(int)
该方法允许我们调整String实例的缩进。
String result = "foo\nbar\nbar2".indent(4);
System.out.println(result);
// foo
// bar
// bar2
System.out.println(result.length()); // 25
JEP-326 – Raw String Literals已经退出JDK 12的原始字符串文字。
String#transform(Function)
JDK-8203442引入的一个小方法,它提供的函数作为输入提供给特定的String实例,并返回该函数返回的输出。
var result = "foo".transform(input -> input + " bar");
System.out.println(result); // foo bar
或者
var result = "foo"
.transform(input -> input + " bar")
.transform(String::toUpperCase)
System.out.println(result); // FOO BAR
但是,这并不意味着我们应该这样做。
public <R> R transform(Function<? super String, ? extends R> f) {
return f.apply(this);
}
在某种情况下 该方法应该被称为map().
String#describeConstable
一个非常有趣的方法来自新引入的接口java.lang.constant.Constable - 它用于标记constable类型,这意味着这类型的值是常量,可以在JVMS 4.4常量池中定义.
/**
* Returns an {@link Optional} containing the nominal descriptor for this
* instance, which is the instance itself.
*
* @return an {@link Optional} describing the {@linkplain String} instance
* @since 12
*/
@Override
public Optional<String> describeConstable() {
return Optional.of(this);
}
String#resolveConstantDesc(MethodHandles$Lookup)
不会经常手动调用来自java.lang.constant.ConstantDesc。
/**
* Resolves this instance as a {@link ConstantDesc}, the result of which is
* the instance itself.
*
* @param lookup ignored
* @return the {@linkplain String} instance
* @since 12
*/
@Override
public String resolveConstantDesc(MethodHandles.Lookup lookup) {
return this;
}
Java11 字符串Api特性可参考:https://blog.csdn.net/u011663149/article/details/87878669