Effektives Java Kapitel 3

Kapitel 3. Allen Objekten gemeinsame Methoden

10. Gleiche Überschreibung sollte allgemeinen Verträgen unterliegen

11. Wenn Sie gleich überschreiben, überschreiben Sie auch den Hashcode

12. Überschreiben Sie immer toString

    public String toString() {
        ThreadGroup group = getThreadGroup();
        if (group != null) {
            return "Thread[" + getName() + "," + getPriority() + "," +
                           group.getName() + "]";
        } else {
            return "Thread[" + getName() + "," + getPriority() + "," +
                            "" + "]";
        }
    }

13. Seien Sie vorsichtig, wenn Sie den Klon überschreiben

14. Erwägen Sie die Implementierung von Comparable

package tryAny.effectiveJava;

import static java.util.Comparator.*;
import java.util.Comparator;
import java.util.stream.Stream;

public class CompareTest {
    public static void main(String[] args) {
	Stream<PhoneNum> s = Stream.of(new PhoneNum(111, 222, 333), new PhoneNum(111, 222, 222),
		new PhoneNum(111, 333, 111), new PhoneNum(000, 999, 1));
	s.sorted().forEach(System.out::println);
    }
}

class PhoneNum implements Comparable<PhoneNum> {
    int areaCode;
    int prefix;
    int lineNum;

    public PhoneNum(int areaCode, int prefix, int lineNum) {
	this.areaCode = areaCode;
	this.prefix = prefix;
	this.lineNum = lineNum;
    }

    private static final Comparator<PhoneNum> COMPARATOR = comparingInt((PhoneNum pn) -> pn.areaCode)
	    .thenComparingInt(pn -> pn.prefix).thenComparingInt(pn -> pn.lineNum);

    @Override
    public int compareTo(PhoneNum pn) {
	return COMPARATOR.compare(this, pn);
    }

    @Override
    public String toString() {
	StringBuilder sb = new StringBuilder();
	sb.append("areaCode:").append(areaCode).append(",prefix:").append(prefix).append(",lineNum:").append(lineNum);
	return sb.toString();
    }
}

Recommended Posts

Effektives Java Kapitel 2
Effektives Java Kapitel 6 34-35
Effektives Java Kapitel 4 15-22
Effektives Java Kapitel 3
Effektive Java 3rd Edition Kapitel 5 Generika
Effektive Java 3rd Edition Kapitel 8 Methoden
[Read Effective Java] Kapitel 2 Punkt 7 "Vermeiden Sie Finalizer"
Effektives Java 3rd Edition Kapitel 9 Programm Allgemein
Java-Leistung Kapitel 1 Einführung
effektive Java 3. Zusammenfassung
Builder-Muster (effektives Java)
Effektive Java 3rd Edition Kapitel 6 Aufzählung und Anmerkungen
Effektive Java 3rd Edition Kapitel 4 Klassen und Schnittstellen
[Read Effective Java] Kapitel 3 Punkt 10 "Immer toString überschreiben"
Effektive Java 3rd Edition Kapitel 7 Lambda und Stream
Ich habe Java Gold gestartet (Kapitel 1-1)
[Read Effective Java] Kapitel 3 Punkt 12 "Berücksichtigung der Implementierung von Comparable"
Java-Leistung Kapitel 2 Ansatz für Leistungstests
Java
Effektive Java 3rd Edition Kapitel 2 Objekterstellung und Verschwindenlassen
Java
Von ineffektivem Java zu effektivem Java
[Effektives Java] Veraltete Objektreferenzen entfernen
Java-Leistung Kapitel 5 Grundlagen der Garbage Collection
[Effektives Java] Vermeiden Sie das Erstellen unnötiger Objekte
[Read Effective Java] Kapitel 2 Punkt 4 "Unmöglichkeit der Instanziierung mit privatem Konstruktor erzwingen"
[Read Effective Java] Kapitel 3 Punkt 9 "Wenn Sie equals überschreiben, überschreiben Sie immer hashCode"
[Read Effective Java] Kapitel 2 Punkt 5 "Vermeiden Sie die Erstellung unnötiger Objekte"
Java lernen (0)
[Java] -Array
Java geschützt
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Java-Array
[Java] ArrayDeque
Java (Methode)
Java Day 2018
Java-Zeichenfolge
Java (Array)
Java statisch
Java-Serialisierung
Java Anfänger 4
[Read Effective Java] Kapitel 2 Punkt 1 "Betrachten Sie statische Factory-Methoden anstelle von Konstruktoren"
JAVA hat bezahlt
Java studieren ―― 4
Java (gesetzt)
Java-Shell-Sortierung
[Java] compareTo
Java studieren -5
Java reflektierend 获 获 举
Java (Schnittstelle)
Java-Array
Java studieren ―― 1
[Java] Array
[Java] Polymorphismus