Effektive Java 3rd Edition Kapitel 4 Klassen und Schnittstellen

[Effektive Java 3rd Edition](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-%E3%] 82% B8% E3% 83% A7% E3% 82% B7% E3% 83% A5% E3% 82% A2% E3% 83% BB% E3% 83% 96% E3% 83% AD% E3% 83% 83% E3% 82% AF-ebook / dp / B07RHX1K53) hat eine Kindle-Version, daher werde ich sie zusammenfassen.

Zurück: Effektive Java 3rd Edition, Kapitel 3, allen Objekten gemeinsame Methoden Weiter: Effektive Java 3rd Edition Kapitel 5 Generika

Punkt 15 Minimieren Sie die Zugänglichkeit für Klassen und Mitglieder

Klassen und Schnittstellen der obersten Ebene

Mitglieder (Felder, Methoden, verschachtelte Klassen, verschachtelte Schnittstellen)

//Mögliche Sicherheitslücke (der Inhalt des Arrays kann geändert werden)
public static final Thing[] VALUES = { ... };

//Lösung 1. Gibt eine öffentliche unveränderliche Liste zurück
private static final Thing[] PRIVATE_VALUES = { ... };
public static final List<Thing> VALUES = 
  Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));

//Lösung 2. Gibt eine Kopie des Arrays in der öffentlichen Methode zurück
private static final Thing[] PRIVATE_VALUES = { ... };
public static final Thing[] values() { 
  return PRIVATE_VALUES.clone();
}

Punkt 16 Verwenden Sie in der öffentlichen Klasse die Zugriffsmethode anstelle des öffentlichen Felds.

Punkt 17 Variabilität minimieren

Punkt 18 Wählen Sie die Komposition aus der Vererbung aus

Punkt 19 Entwurf und Dokument für die Vererbung, andernfalls die Vererbung verbieten

--Das Entwerfen einer Klasse für die Vererbung führt zu erheblichen Einschränkungen für diese Klasse. Jeder Eigenverbrauch der Klasse muss dokumentiert werden, und sobald er dokumentiert ist, muss er befolgt werden, solange die Klasse existiert. --Verwenden Sie das Javadoc-Tag von "@ implSpec", um die Vererbung zu dokumentieren.

Punkt 20 Wählen Sie eine Schnittstelle über einer abstrakten Klasse aus

--Wenn eine Methode mit einer Schnittstelle offensichtlich implementiert ist, sollten Sie Implementierungsunterstützung im Standardmethodenformat bereitstellen. Das Bereitstellen von Standardmethoden für Objektmethoden wie equals und hashCode ist nicht zulässig.

Punkt 21 Entwerfen Sie die Schnittstelle für die Zukunft

Punkt 22 Verwenden Sie die Schnittstelle nur, um den Typ zu definieren

Punkt 23 Wählen Sie eine Klassenhierarchie anstelle einer markierten Klasse aus

Punkt 24 Wählen Sie eine statische Elementklasse gegenüber einer nicht statischen Elementklasse aus

――Vier Arten verschachtelter Klassen

statische Mitgliedsklasse


class Outer {
    private int outerField;
    private static int a;

    //statische Mitgliedsklasse
    static class Inner {
        void innerMethod() {
            //Nur für statische externe Klassenmitglieder verfügbar
            a = 10;
        }
    }

    //Methoden innerhalb der äußeren Klasse
    void outerMethod() {
        Inner ic = new Inner();
    }
}

class Main {
    public static void main(String[] args) {
        // Outer.Wird in Inner verwendet
        Outer.Inner ic = new Outer.Inner();
        ic.innerMethod();
    }
}

Nicht statische Mitgliedsklasse


class Outer {
    private static int outerField;
    private int b;

    //Nicht statische Mitgliedsklasse
    class Inner {
        void innerMethod() {
            outerField = 10;
            b = 5;
        }
    }

    //Methoden innerhalb der äußeren Klasse
    void outerMethod() {
        Inner ic = new Inner();
    }
}

class Main {
    public static void main(String[] args) {
        Outer o = new Outer();
        // o.Gebraucht in neu
        Outer.Inner in = o.new Inner();
    }
}

Punkt 25 Beschränken Sie Quelldateien auf eine einzelne Klasse der obersten Ebene

Recommended Posts

Effektive Java 3rd Edition Kapitel 4 Klassen und Schnittstellen
Effektive Java 3rd Edition Kapitel 6 Aufzählung und Anmerkungen
Effektive Java 3rd Edition Kapitel 7 Lambda und Stream
Effektive Java 3rd Edition Kapitel 5 Generika
Effektive Java 3rd Edition Kapitel 8 Methoden
Effektive Java 3rd Edition Kapitel 2 Objekterstellung und Verschwindenlassen
Effektives Java 3rd Edition Kapitel 9 Programm Allgemein
Effektive Java 3rd Edition Kapitel 3 Allen Objekten gemeinsame Methoden
Was hat sich zwischen Effective Java 2nd Edition und 3rd Edition geändert?
Effektives Java Kapitel 2
Effektives Java Kapitel 6 34-35
Effektives Java Kapitel 4 15-22
Effektives Java Kapitel 3
effektive Java 3. Zusammenfassung
Java (Klasse und Instanz)
Effektive Java 3rd Edition Abschnitt 85 Auswählen einer Alternative zur Java-Serialisierung
[Java] Generics-Klasse und Generics-Methode
Java abstrakte Methoden und Klassen
Java und primäre Funktionen - jenseits funktionaler Schnittstellen -
Java Generics (definiert Klassen und Methoden)
Klassen und Instanzen Java für Anfänger
Ein Hinweis zu den Unterschieden zwischen Schnittstellen und abstrakten Klassen in Java
Java-Programmierung (Klassen und Instanzen, Hauptmethoden)
[Read Effective Java] Kapitel 2 Punkt 7 "Vermeiden Sie Finalizer"
JAVA lernen Geschichte abstrakte Klassen und Methoden
[Details] Lassen Sie uns abstrakte Klassen und Schnittstellen beherrschen! !!
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Effektive Zusammenfassung der Umfrage zu Java 2nd Edition
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
[Read Effective Java] Kapitel 3 Punkt 10 "Immer toString überschreiben"
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
Ich habe versucht, Effective Java 3rd Edition "fast alle Kapitel" in "leicht lesbarem Japanisch" zu erklären.
Java und JavaScript
XXE und Java
[Read Effective Java] Kapitel 2 Punkt 6 "Veraltete Objektreferenzen entfernen"
In der Abbildung verstandene Java-Klassen und -Instanzen
Äquivalenter Vergleich von Java-Wrapper-Klasse und primitivem Typ
Aktualisierungen von Effective Java Third Edition 2nd Edition Persönliche Notizen
Ich werde einen Auszug dessen schreiben, was ich beim Lesen von Effective Java 3rd Edition interessant fand