Es könnte sein, dass Sie eine Extrapolation des Postelschen Gesetzes gehört haben : "Seien Sie konservativ in dem, was Sie senden, liberal in dem, was Sie akzeptieren."
Meist geht es darum, die Wiederverwendbarkeit von Code zu maximieren. Es ist einfach, Fälle zu finden, um zu demonstrieren, warum es hilft. Betrachten Sie Java Iterable<T>
als Beispiel. Wenn Ihre Methode nur alle T
s durchläuft , können Sie mit einem Iterable<T>
Parametertyp als Methode diese Methode mit über 60 integrierten Klassen verwenden, ganz zu schweigen von benutzerdefinierten Klassen, die die Schnittstelle implementieren. Wenn Sie es beispielsweise auf beschränken Vector<T>
würden, müsste jeder Code, der Ihre Methode aufruft, in einen Vector<T>
ersten konvertiert werden .
Auf der anderen Seite, die Rückkehr eines Iterable<T>
von einem Verfahren begrenzt die Menge an Code, der Ihren Rückgabewert für diejenigen , die einen nehmen können Iterable<T>
Parameter. Wenn Sie einen sehr konkreten Typ zurückgeben, wie Vector<T>
, dann können Sie Ihre Rückgabewert in jede Methode übergeben werden, der eine nimmt Serializable
, Cloneable
, Iterable<T>
, Collection<T>
, List<T>
, RandomAccess
, Vector<T>
, AbstractList<T>
, oder AbstractCollection<T>
, und es wird erwartet funktionieren.