import java.nio.charset.Charset;
public class ApplicationCharsets {
public static final Charset UTF_8
= Charset.forName( "UTF-8" );
public static final Charset ISO_8859_1
= Charset.forName( "ISO-8859-1" );
public static final Charset WINDOWS_1252
= Charset.forName( "WINDOWS-1252" );
}
Seit Java 7 gibt es die Klasse java.nio.charset.StandardCharsets, die Konstanten für die Zeichensätze enthält, die garantiert in jeder Java-Implementierung zur Verfügung stehen – US-ASCII, ISO-8859-1 (ISO Latin 1) sowie diverse Unicode-Kodierungen.
Damit man im Anwendungs-Code nicht verschiedene Klassen für die Standard- und die Anwendungs-Zeichensatzkodierungen referenzieren muss, könnte man die Anwendungs-Konstanten wie folgt formulieren ...
import java.nio.charset.*;
public class ApplicationCharsets
extends StandardCharsets /* geht nicht :-( */ {
public static final Charset WINDOWS_1252
= Charset.forName( "WINDOWS-1252" );
}
... wenn die Klasse
StandardCharsets
nicht final
wäre. So bleibt derzeit leider nur folgender Ausweg:public class ApplicationCharsets {
public static final Charset UTF_8
= StandardCharsets.UTF_8;
public static final Charset ISO_8859_1
= StandardCharsets.ISO_8859_1;
public static final Charset WINDOWS_1252
= Charset.forName( "WINDOWS-1252" );
}
Warum also darf von
StandardCharsets
keine Unterklasse abgeleitet werden? Einfach nur aus historischen Gründen, weil ähnliche Klassen bisher auch final
waren? Kann man das in Java 8 ändern?