Home  >  Article  >  Java  >  Item Reference objects through their interfaces

Item Reference objects through their interfaces

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 09:42:02178browse

Item  Referencie os objetos através das interfaces deles

Preference for interfaces as reference types:
If a suitable interface exists, you should reference objects through it instead of the concrete class.
This applies to parameters, return values, variables and fields.

Flexibility when using interfaces:
Using interfaces allows you to change the implementation without affecting the code.
Example: changing from LinkedHashSet to HashSet or TreeSet, just change the constructor.

When NOT to use interfaces:
Implementation-specific functionality:
If an implementation offers something not required by the interface (e.g. LinkedHashSet guarantees iteration order, but HashSet does not).

Without a proper interface:
Some classes like String or BigInteger do not have equivalent interfaces and must be used directly.

Class-based frameworks:
Example: OutputStream in the java.io package is referenced through an abstract class, not an interface.

Implementation-specific methods:
Example: PriorityQueue implements Queue, but has a comparator() method not present in Queue. Only use the class if you need this extra method.

Benefit:
Using interfaces makes the program more flexible and modular, allowing you to easily change implementations without breaking existing code.

Code Examples
Good example: Use interface as type

Set<String> s = new LinkedHashSet<>();

Bad example: Using the concrete class as type

LinkedHashSet<String> s = new LinkedHashSet<>();

Flexibility: Changing the implementation without affecting the code

Set<String> s = new TreeSet<>();

Example of using a final class like String

String str = "Hello";

Example of using a framework base class

OutputStream output = new FileOutputStream("file.txt");

The above is the detailed content of Item Reference objects through their interfaces. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn