Tất cả các câu trả lời tốt ở đây. Tôi muốn thêm một cách sử dụng thực tế khác của hàm tĩnh trong giao diện. Mẹo đến từ cuốn sách - Java hiệu quả, Tái bản lần thứ 3 của Joshua Bloch trong Chương 2: Tạo và phá hủy đối tượng.
Static functions can be used for static factory methods.
Phương thức nhà máy tĩnh là các phương thức trả về một đối tượng. Chúng hoạt động giống như constructor. Trong các trường hợp cụ thể, phương thức static factory cung cấp mã dễ đọc hơn là sử dụng hàm tạo.
Trích dẫn từ sách - Java hiệu quả, Tái bản lần thứ 3 của Joshua Bloch
Trước Java 8, các giao diện không thể có các phương thức tĩnh. Theo quy ước, các phương thức nhà máy tĩnh cho một giao diện có tên là Kiểu được đặt trong một lớp đồng hành không bền (Mục 4) có tên là Kiểu.
Tác giả đưa ra một ví dụ về Bộ sưu tập nơi phương pháp nhà máy tĩnh như vậy được thực hiện. Kiểm tra mã, Josh Bloch có thể được xem là tác giả đầu tiên của lớp Collections. Mặc dù Bộ sưu tập là một lớp chứ không phải giao diện. Nhưng khái niệm vẫn được áp dụng.
Ví dụ: Java Collections Framework có 45 triển khai tiện ích cho các giao diện của nó, cung cấp các bộ sưu tập không thể sửa đổi, bộ sưu tập được đồng bộ hóa và những thứ tương tự. Gần như tất cả các triển khai này đều được xuất thông qua các phương thức của nhà máy tĩnh trong một lớp không thể thay đổi (java.util.Collections). Các lớp của các đối tượng được trả về đều là không công khai.
Hơn nữa, anh ấy giải thích rằng API không chỉ nhỏ hơn, nó giúp dễ đọc mã và API dễ dàng ..
Nó không chỉ là khối lượng lớn của API bị giảm đi mà là trọng lượng của khái niệm: số lượng và độ khó của các khái niệm mà lập trình viên phải nắm vững để sử dụng API. Lập trình viên biết rằng đối tượng trả về đã chính xác là API được chỉ định bởi giao diện của nó, vì vậy không cần phải đọc tài liệu lớp bổ sung cho lớp triển khai.
Đây là một trong những phương thức tĩnh từ lớp java.util.Collections:
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
return new UnmodifiableCollection<>(c);
}