No Java 19, os construtores públicos da Localeclasse foram marcados como "obsoletos".
Em vez disso, devemos usar o novo método de fábrica estático Locale.of(). Isso garante que haja apenas uma instância por Locale configuração.
O exemplo a seguir mostra o uso do método fábrica comparado ao construtor:
Locale german1 = new Locale("de"); // deprecated
Locale germany1 = new Locale("de", "DE"); // deprecated
Locale german2 = Locale.of("de");
Locale germany2 = Locale.of("de", "DE");
System.out.println("german1 == Locale.GERMAN = " + (german1 == Locale.GERMAN));
System.out.println("germany1 == Locale.GERMANY = " + (germany1 == Locale.GERMANY));
System.out.println("german2 == Locale.GERMAN = " + (german2 == Locale.GERMAN));
System.out.println("germany2 == Locale.GERMANY = " + (germany2 == Locale.GERMANY));
Ao executar este código, você verá que os objetos fornecidos por meio do método de fábrica são idênticos às Locale constantes – aqueles criados por meio de construções logicamente não são.
Podemos ver issue que gerou essa mudança no "Jira" do opensdk
https://bugs.openjdk.org/browse/JDK-8283478