殺すためのインタビュー|Java8-18によって導入された新機能について話してください(3)

一緒に書く習慣をつけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して8日目です。クリックしてイベントの詳細をご覧ください

Java8は2014年3月18日にリリースされ、2022年4月6日の時点で、最新のリリースはJava18です。バージョン17、11、および8は、現在サポートされているロングタームサポート(LTS)リリースです。この記事では、Java8以降の各バージョンの機能を確認します。ベンチに座って行ってください。前の記事を読みたい場合は、ここをクリックしてインタビューとアンチキルをご覧ください| Java8-18によって導入された新機能についてお話しください(2)

Java12の新機能

コンパクトな数値フォーマット

Java12は、新しい数値フォーマッタであるCompactNumberFormatをもたらします。これは、特定の領域によって提供されるパターンに基づいて、短い形式で数値を表すように設計されています。

そのインスタンスは、NumberFormatクラスのgetCompactNumberInstanceメソッドを介して取得できます。

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

前述のように、ロケールパラメータは適切なフォーマットパターンを提供する役割を果たします。フォーマットスタイルはSHORTまたはLONG​​にすることができます。フォーマットスタイルをよりよく理解するために、米国地域の1000について考えてみましょう。SHORTスタイルは「10K」としてフォーマットされ、LONGスタイルは「10000」としてフォーマットされます。

次に、「記事のいいねの数」の例を見て、2つの異なるスタイルを使用して圧縮します。

@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));
}
复制代码

instanceofのパターンマッチング

Java 12で導入されたもう1つのプレビュー機能は、instanceofパターンマッチングです。

以前のJavaバージョンでは、ifステートメントとinstanceofを使用する場合、そのプロパティにアクセスするためにオブジェクトを明示的にキャストする必要がありました。

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

Java 12では、この新しい型付き変数をステートメントで直接宣言できます。

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

文字列クラスの新しいメソッド

Java 12は、Stringクラスに2つの新しいメソッドを提供します。

1つ目は、文字列のインデントが整数パラメーターに従って各行のインデントを調整することです。引数がゼロより大きい場合、各行の先頭に新しいスペースが挿入されます。一方、パラメータがゼロ未満の場合、各行のリクエストから空白が削除されます。指定された行に十分な空白が含まれていない場合、先頭の空白文字はすべて削除されます。

それでは、基本的な例を見てみましょう。まず、テキストを4つのスペースにインデントしてから、インデント全体を削除します。

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

出力は次のとおりです。

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

値-10(インデント数を超える)を渡しても、スペースのみが影響を受け、他の文字はそのままであることに注意することが重要です。

2番目の新しいメソッドはtransformです。これは、文字列に適用される引数として1つの引数関数を受け入れます。

簡単な例として、transformメソッドを使用して文字列を復元してみましょう。

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

もちろん、以下を含むがこれらに限定されない他の新機能があります。

  • nio.file.FilesユーティリティクラスのFile::mismatch
  • ティーイングコレクター
  • プレビューの変更
  • JVMの変更

引き続き、各バージョンの新機能についてお話ししますので、お楽しみに!

おすすめ

転載: juejin.im/post/7083992742069534757