Методы интерфейса
Что такое StringJoiner?
StringJoiner — это класс в Java, введенный в Java 8 в пакете
java.util, который используется для построения
последовательности символов в виде строки с разделителями. Он предназначен для
удобной конкатенации строк с заданным разделителем и опциональным префиксом и
суффиксом.
StringJoiner
:
-
Конструкторы:
-
StringJoiner(CharSequence delimiter): СоздаетStringJoinerс указанным разделителем. -
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix): СоздаетStringJoinerс указанным разделителем, префиксом и суффиксом.
-
-
Методы:
-
add(CharSequence csq): Добавляет строку к последовательности. -
toString(): Возвращает текущее состояние последовательности в виде строки. -
length(): Возвращает длину строки, которую вернёт toString(), включая разделители, префикс и суффикс. Это не число добавленных элементов.
-
setEmptyValue(CharSequence emptyValue): Устанавливает значение по умолчанию, которое будет возвращено методомtoString(), если последовательность пуста.
-
-
Пример использования:
import java.util.StringJoiner; public class Main { public static void main(String[] args) { StringJoiner joiner = new StringJoiner(", ", "[", "]"); joiner.add("Apple"); joiner.add("Orange"); joiner.add("Banana"); String result = joiner.toString(); System.out.println(result); // Выведет: [Apple, Orange, Banana] } }В приведенном примере
StringJoinerсоздается с разделителем", ", префиксом[и суффиксом]. Затем к нему добавляются строки"Apple","Orange"и"Banana", и результат выводится как[Apple, Orange, Banana].
Что такое default-методы интерфейса?
Default методы интерфейса введены в Java 8 и представляют собой
методы, которые могут иметь реализацию по умолчанию в интерфейсе. Ранее
интерфейсы в Java могли содержать только абстрактные методы (методы без тела),
которые требовали реализации в классах, реализующих интерфейс.
Default методы изменяют эту концепцию, позволяя добавлять методы с
реализацией в интерфейсы.
default
методов:
-
Синтаксис:
Defaultметоды объявляются с ключевым словомdefaultперед сигнатурой метода. Они могут иметь тело метода (реализацию).Пример:
public interface MyInterface { // Абстрактный метод void abstractMethod(); // Default метод с реализацией по умолчанию default void defaultMethod() { System.out.println("Default implementation of defaultMethod"); } } -
Цель:
Defaultметоды позволяют добавлять новые методы в существующие интерфейсы без необходимости изменять код всех классов, которые реализуют интерфейс. Это особенно полезно для добавления новой функциональности в интерфейсы после их первоначального определения без нарушения обратной совместимости. -
Пример использования:
public interface Vehicle { void start(); default void stop() { System.out.println("Stopping the vehicle"); } } public class Car implements Vehicle { @Override public void start() { System.out.println("Starting the car"); } } public class Main { public static void main(String[] args) { Car car = new Car(); car.start(); // Выведет: Starting the car car.stop(); // Выведет: Stopping the vehicle } }В приведенном примере
Vehicle— это интерфейс с методамиstart()(абстрактный) иstop()(default метод с реализацией). КлассCarреализует интерфейсVehicle, переопределяя абстрактный методstart(). Методstop()вызывается на объекте типаCar, используя его реализацию default метода из интерфейсаVehicle.
Что такое static метод интерфейса?
Static метод интерфейса (static method in interfaces)
— это метод, который объявлен с модификатором static внутри
интерфейса в Java. Эта возможность была введена в Java 8 и является частью
расширения функциональности интерфейсов.
static
методов интерфейса:
-
Синтаксис: Static методы в интерфейсе объявляются как статические методы с реализацией по умолчанию. Они не требуют создания экземпляра интерфейса для их вызова.
Пример:
public interface MyInterface { // Static метод с реализацией static void staticMethod() { System.out.println("Static method in interface"); } } -
Цель: Static методы интерфейса предоставляют способ организации вспомогательной функциональности, которая связана с интерфейсом, но не зависит от конкретной реализации объектов интерфейса. Они могут быть использованы для утилитарных методов, фабричных методов или любых других операций, которые не требуют доступа к состоянию экземпляра.
-
Пример использования:
public interface Calculator { // Абстрактный метод int calculate(int a, int b); // Static метод в интерфейсе static Calculator getInstance() { return (a, b) -> a + b; } } public class Main { public static void main(String[] args) { // Вызов static метода интерфейса Calculator calculator = Calculator.getInstance(); int result = calculator.calculate(5, 3); System.out.println("Result: " + result); // Выведет: 8 } }В приведенном примере
Calculator— это интерфейс с абстрактным методомcalculate(int a, int b)и статическим методомgetInstance(), который возвращает экземпляр реализацииCalculator. МетодgetInstance()используется для создания объекта интерфейса без необходимости его конкретной реализации.
Как вызывать static метод интерфейса?
Вызов static метода интерфейса в Java осуществляется напрямую через имя интерфейса, используя точечную нотацию. Это возможно с момента появления static методов в интерфейсах, начиная с Java 8.
static
метод интерфейса:
-
Через имя интерфейса:
public interface MyInterface { static void staticMethod() { System.out.println("Static method in MyInterface"); } } public class Main { public static void main(String[] args) { // Вызов static метода через имя интерфейса MyInterface.staticMethod(); } } -
При вызове из другого класса также указывайте имя интерфейса: MyInterface.staticMethod(). Статические методы интерфейса не наследуются реализующими классами.
public interface MyInterface { static void staticMethod() { System.out.println("Static method in MyInterface"); } } public class AnotherClass { public static void main(String[] args) { // Вызов static метода интерфейса MyInterface MyInterface.staticMethod(); } }