Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
264 views
in Technique[技术] by (71.8m points)

java - Interfaces in collections framework

My question is

Interface Set has method add(E e) and it extends interface Collection. Interface Collection also has method add(E e) So why do we need the same method in interface Set , since it already extends interface Collection. What is the purpose ? I am stuck with that

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Since the two correct answers didn't manage to convince you, I'll try to explain.

Interfaces define contracts - i.e. they define what implementors are going (and bound) to do, so that you know that whenever you refer to an object by an interface, it has a strictly defined behaviour, no matter how exactly it has been implemented.

Now, this contract comes in two parts:

  • method signature - the method signature is the element that is enforced by the compiler - all implementors must conform to the all method signatures defined by the interface
  • documented behaviour - when there is more to a method than its method signature, the special behaviour is documented. It again tells the client of the interface what to expect from all implementors, although it does not technigally force implementors to conform to it.

And here comes the concrete Collection / Set example:

  • if you are referring to an object as a Collection, then you don't know anything of the behaviour of add - whether it allows duplicates or not
  • if you are referring to an object as a Set, then you are certain that no duplicates are allowed.

This distinction is made by the javadoc of the redefined add method.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...