UM DAS PROBLEM DER LETZTEN KLASSE ZU LÖSEN:
Es gibt zwei Möglichkeiten, eine Klasse endgültig zu machen. Die erste ist die Verwendung des Schlüsselworts final in der Klassendeklaration:
public final class SomeClass {
// . . . Class contents
}
Die zweite Möglichkeit, eine Klasse endgültig zu machen, besteht darin, alle ihre Konstruktoren als privat zu deklarieren:
public class SomeClass {
public final static SOME_INSTANCE = new SomeClass(5);
private SomeClass(final int value) {
}
Die Kennzeichnung als final erspart Ihnen den Ärger, wenn Sie herausfinden, dass es sich tatsächlich um eine final handelt, um dies zu demonstrieren, sehen Sie sich diese Klasse Test an. sieht auf den ersten Blick öffentlich aus.
public class Test{
private Test(Class beanClass, Class stopClass, int flags)
throws Exception{
// . . . snip . . .
}
}
Da der einzige Konstruktor der Klasse privat ist, ist es leider unmöglich, diese Klasse zu erweitern. Im Falle der Klasse Test gibt es keinen Grund, warum die Klasse final sein sollte. Die Klasse Test ist ein gutes Beispiel dafür, wie implizite finale Klassen Probleme verursachen können.
Sie sollten es also als final markieren, wenn Sie eine Klasse implizit final machen, indem Sie ihren Konstruktor privat machen.