Entrevista para matar | Hable sobre las nuevas características introducidas por Java8-18 (3)

¡Acostúmbrate a escribir juntos! Este es el octavo día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .

Java8 se lanzó el 18 de marzo de 2014 y, a partir del 6 de abril de 2022, la última versión es Java18. Las versiones 17, 11 y 8 son las versiones de soporte a largo plazo (LTS) compatibles actualmente. Este artículo lo lleva a revisar las características de cada versión a partir de Java 8. ¡Siéntese en el banco y listo! Si desea leer el artículo anterior, haga clic aquí para una entrevista y anti-kill | Hable sobre las nuevas características introducidas por Java8-18 (2)

Novedades en Java 12

Formato de número compacto

Java12 trae un nuevo formateador de números: CompactNumberFormat. Está diseñado para representar un número en una forma más corta según un patrón proporcionado por una región determinada.

Podemos obtener su instancia a través del método getCompactNumberInstance en la clase NumberFormat:

public static NumberFormat getCompactNumberInstance(Locale locale, NumberFormat.Style formatStyle)
复制代码

Como se mencionó anteriormente, el parámetro locale es responsable de proporcionar el patrón de formato apropiado. El estilo de formato puede ser CORTO o LARGO. Para comprender mejor los estilos de formato, consideremos el 1000 para la región de EE. UU. El estilo CORTO se formateará como "10K" y el estilo LARGO se formateará como "10000".

Ahora veamos un ejemplo, "Número de Me gusta en un artículo", y luego comprímalo usando dos estilos diferentes:

@Test
public void givenNumber_thenCompactValues() {
    NumberFormat likesShort = 
      NumberFormat.getCompactNumberInstance(new Locale("en", "US"), NumberFormat.Style.SHORT);
    likesShort.setMaximumFractionDigits(2);
    assertEquals("2.59K", likesShort.format(2592));
​
    NumberFormat likesLong = 
      NumberFormat.getCompactNumberInstance(new Locale("en", "US"), NumberFormat.Style.LONG);
    likesLong.setMaximumFractionDigits(2);
    assertEquals("2.59 thousand", likesLong.format(2592));
}
复制代码

coincidencia de patrones para instancia de

Otra característica de vista previa introducida en Java 12 es la coincidencia de patrones de instancias.

En versiones anteriores de Java, cuando usamos sentencias if e instanceof, teníamos que convertir explícitamente el objeto para acceder a sus propiedades:

Object obj = "Hello World!";
if (obj instanceof String) {
    String s = (String) obj;
    int length = s.length();
}
复制代码

Con Java 12, podemos declarar esta nueva variable escrita directamente en la declaración:

if (obj instanceof String s) {
    int length = s.length();
}
复制代码

Métodos nuevos de clase de cadena

Java 12 proporciona dos nuevos métodos en la clase String.

La primera es que la sangría de cadenas ajusta la sangría de cada línea según el parámetro entero. Si el argumento es mayor que cero, se insertará un nuevo espacio al comienzo de cada línea. Por otro lado, si el parámetro es menor que cero, se eliminan los espacios en blanco de la solicitud para cada línea. Si la línea dada no contiene suficientes espacios en blanco, se eliminan todos los caracteres de espacio en blanco iniciales.

Ahora, veamos un ejemplo básico. Primero, sangramos el texto a cuatro espacios, luego eliminamos la sangría completa:

String text = "Hello world!\nThis is Java.";
​
text = text.indent(4);
System.out.println(text);
​
text = text.indent(-10);
System.out.println(text);
复制代码

La salida es la siguiente:

    Hello world!
    This is Java.
​
Hello world!
This is Java.
复制代码

Es importante tener en cuenta que incluso si pasamos el valor 10 (superando el recuento de sangrías), solo los espacios se ven afectados, los demás caracteres están intactos.

El segundo método nuevo es transform, que acepta una función de un argumento como argumento que se aplicará a la cadena.

Como un ejemplo simple, usemos el método de transformación para restaurar la cadena:

@Test
public void givenString_thenRevertValue() {
    String text = "Baeldung";
    String transformed = text.transform(value ->
      new StringBuilder(value).reverse().toString()
    );
​
    assertEquals("gnudleaB", transformed);
}
复制代码

Por supuesto, hay otras características nuevas, que incluyen pero no se limitan a:

  • File::mismatch en la clase de utilidad nio.file.Files
  • Colector de salida
  • Vista previa de cambios
  • Cambios de JVM

Continuará, sigamos hablando de las nuevas características de cada versión, ¡así que mantente al tanto!

Supongo que te gusta

Origin juejin.im/post/7083992742069534757
Recomendado
Clasificación