Автор оригинала: Pankaj Kumar.
Java 12 была выпущена в марте 2019 года. В классе String добавлены четыре новых метода. В этом уроке мы подробно рассмотрим эти новые методы.
1. отступ(int n)
Этот метод корректирует отступ каждой строки в строке на основе значения “n”, а также нормализует символы окончания строки.
- Если n > 0, то в начале каждой строки вставляется n пробелов (U+0020).
- Если n < 0, то пробелы в начале каждой строки удаляются. Если данная строка не содержит достаточного количества пробелов, то все начальные пробелы удаляются. Символ табуляции также рассматривается как один символ.
- Если, то строка остается неизменной. Однако терминаторы строк все еще нормализуются.
String str = "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****"; System.out.println(str.indent(0)); System.out.println(str.indent(3)); System.out.println(str.indent(-3));
Выход:
***** Hi Hello Pankaj How are you? ***** ***** Hi Hello Pankaj How are you? ***** ***** Hi Hello Pankaj How are you? *****
Давайте рассмотрим те же примеры с помощью оболочки .
➜ ~ jshell | Welcome to JShell -- Version 12 | For an introduction type: /help intro jshell> String str = "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****"; str ==> "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****" jshell> str.indent(0) $2 ==> "*****\n Hi\n \tHello Pankaj\nHow are you?\n*****\n" jshell> str.indent(3) $3 ==> " *****\n Hi\n \tHello Pankaj\n How are you?\n *****\n" jshell> str.indent(-3) $4 ==> "*****\nHi\nHello Pankaj\nHow are you?\n*****\n" jshell>
Обратите внимание, что \r нормализуется до \n при вызове метода indent ().
2. преобразование(Функция суперструна,? расширяет R> f) суперструна,? расширяет R> f)
Этот метод позволяет нам вызывать функцию в данной строке. Функция должна ожидать один строковый аргумент и выдавать результат R.
Давайте рассмотрим пример, в котором мы будем использовать метод transform() для преобразования строки CSV в список строк. Обратите внимание на использование лямбда-выражений для реализации функционального интерфейса .
String s = "Hi,Hello,Howdy"; List strList = s.transform(s1 -> {return Arrays.asList(s1.split(","));}); System.out.println(strList);
Выход:
3. Необязательно<Строка> описывать констебля()
Java 12 представила API констант в JEP 334 . Если вы посмотрите документацию по классу строк, то увидите, что в нем реализованы два новых интерфейса от Constants API – Constable и ConstantDesc. Этот метод объявлен в интерфейсе констебля и реализован в классе String.
Этот метод возвращает необязательный, содержащий номинальный дескриптор для этого экземпляра, которым является сам экземпляр.
String so = "Hello"; Optional os = so.describeConstable(); System.out.println(os); System.out.println(os.get());
Выход:
Optional[Hello] Hello Hello
Строковый метод Java Описывает Констебля
4. Строка resolveConstantDesc(методы.Поиск поиск)
Этот метод является частью API констант и объявлен в интерфейсе Constant Desc. Он разрешает этот экземпляр как константу Desc, результатом которой является сам экземпляр.
jshell> import java.lang.invoke.MethodHandles; jshell> String so1 = "Hello"; so1 ==> "Hello" jshell> so1.resolveConstantDesc(MethodHandles.lookup()); $18 ==> "Hello"
Вывод
Методы indent() и transform() являются отличным дополнением к классу String. Методы API констант не имеют большого использования для обычных задач, связанных с разработкой.