 
                            ...
Do not introduce ambiguity while overloading (see MET50-JG. Avoid ambiguous uses of overloading), and use overloaded methods sparingly [Tutorials 20102008], because they can make code much less readable.
...
| Code Block | ||
|---|---|---|
| 
 | ||
| class Overloader {
public class Overloader {
  private static String display(List<?> list) {
    return (
      list instanceof ArrayList ? "Arraylist" : 
      (list instanceof LinkedList ? "LinkedList" : 
      "List is not recognized")
    );
  }
  public static void main(String[] args) {
    // Single ArrayList
    System.out.println(display(new ArrayList<Integer>()));
    List<?>[] invokeAll = new List<?>[] {new ArrayList<Integer>(), 
    new LinkedList<String>(), new Vector<Integer>()};
    for (List<?> list : invokeAll) {
      System.out.println(display(list));
    }
  }
}
 | 
...
Applicability
Ambiguous uses of overloading can lead to unexpected results.
...
[API 2011] Interface Collection<E>
 [Bloch 2008] Item 41: Use overloading judiciously
[Tutorials  20102008] Defining Methods
...