Java12 字符串 API 新特性

28 篇文章 0 订阅
6 篇文章 0 订阅

前言:

   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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值