Das Tutorial, auf das Sie verwiesen haben, ist das Object Ordering Tutorial. Die bestimmte Anweisung bezogen auf the Name
class that is given there as an example: Wenn Sie ein solches Name
Objekt erstellt, wo das firstName
oder das lastName
Objekt null
war, dann würde die compareTo
Methode eine NullPointerException
werfen. Dies wird verhindert, indem die Konstruktorargumente sofort überprüft werden.
Allgemein gesagt, sollten Sie sicherstellen, dass die compareTo
Methode nicht keine Ausnahme auslösen kann.
Wie Sie bereits bemerkt haben, gibt es keine Möglichkeit, wie eine int
Variable in diesem Sinne "missgebildet" werden kann. Es kann nicht null
sein, und keine Ausnahme kann verursacht werden, indem ein int
Wert mit einem anderen verglichen wird.
Allerdings gibt es einige andere Punkte in der Anleitung aufgeführt sind, und die Sie kümmern sollte:
- sollten Sie implementieren
hashCode
- Sie implementieren sollten
equals
- sollten Sie sicherstellen, dass Ihre Implementierung von
compareTo
ist konsistent mit gleich, wie in der Comparable
documentation
- beschrieben, wenn möglich, a ll Ihre Felder
final
so dass die Klasse ist unveränderlich
Ein Tipp: Sie haben die Integer#compare
Methode können int Werte bequem vergleichen.
Eine Randbemerkung: Beachten Sie, dass, obwohl ein int
Wert ist immer „gut ausgebildet“ in einem technischen Sinne, es ist sicherlich Geschäft Einschränkungen, die im Konstruktor überprüft werden sollen. In Ihrem Beispiel würden Sie wahrscheinlich zusätzliche Plausibilitätsprüfungen für einige Felder im Konstruktor einfügen wollen:
public Employee(int id, String name, int salary, int age, Date dateOfJoining){
this.id = id;
this.name = Objects.requireNonNull(name);
if (salary <= 0) {
throw new IllegalArgumentException(
"The salary should be positive, but is "+salary);
}
this.salary = salary;
if (age <= 0) {
throw new IllegalArgumentException(
"The age should be positive, but is "+salary);
}
this.age = age;
this.dateOfJoining = Objects.requireNonNull(dateOfJoining);
}
Was würde eine "int" -Variable fehlerhaft machen? –
Dies wären "Geschäftsregeln". Für ein kontextabhängiges Beispiel machen nur positive Alter einen Sinn (und sogar dieser Bereich kann eingeschränkt werden). Es gibt eine ganze Menge Grauzone, wenn/wo Werteinschränkungen erhöht werden sollen. – user2864740
@ElliottFrisch in diesem Zusammenhang vielleicht ein negativer int, eine andere Zahl als int? –