Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Item 40 contains the advice that you should use interfaces rather than classes as parameter types. More generally, you should favor the use of interfaces rather than classes to refer to objects. If appropriate interface types exist, then parameters, return values, variables, and fields should all be declared using interface types. The only time you really need to refer to an object’s class is when you’re creating it with a constructor. To make this concrete, consider the case of Vector, which is an implementation of the List interface. Get in the habit of typing this:
// Good - uses interface as type
List<Subscriber> subscribers = new Vector<Subscriber>();