Методы static Интерфейсы Java 8 упростить и уменьшают их код, и могут увеличить его производительности . Узнайте прямо сейчас, и увеличьте качества ваш код!
Статические методы в классы полезности
Часто необходимо создать методы static
которые могут быть вызваны без необходимости создавать новый объект. Сам JDK| есть несколько классов, которые содержат только методы static , например:
java.lang. Математика ,
java.утилита. Коллекции ,
java.util. Массивы ,
java.util.поток. Потоки .
И JDK ясно, что | не| хочу, что вы создаете экземпляров этих классов. Узнайте строителей взяты непосредственно из исходный код JDK:
// Suppresses default constructor, ensuring non-instantiability. private Collections() { }
// Suppresses default constructor, ensuring non-instantiability. private Arrays() {}
/** * Don't let anyone instantiate this class. */ private Math() {}
private Streams() { throw new Error("no instances"); }
Além disso, inumeras библиотеки диспонибилизирующие классы утилит, отвечающие за тамбовский контекст apenas metodos статический
, камуфляж aquelas dos projetos _ Apache Commons _.
Проблемы с классами полезности
Данный тип обычно называется коммунальных , поэтому прекращение * Util
в них так много, в основном в Apache. Эти классы в основном не соответствуют стандартным Руководство к Объектов (ОО), потому что содержит только код структурирован. Кстати, если бы возможный в Java эти методы не были бы в пределах класс .
При использовании классов полезности?
Тем не следовать концепции OO не обязательно что-то плохое. Но, представьте себе следующую ситуацию: у вас есть класс Лица,
и хотите сделать метод программы static
. Что вы думаете, что делает более направление создание класса PessoaUtil
этот метод, или создать его в свой собственный класс Лицо
? Я advogo по второй вариант . То есть, только я вижу смысл в создании класса коммунальных когда:
- Вы не является владельцем класс original , или не может изменить ; или
- В наличии | структуры| интерфейсы и этот метод утилита служит для них. Это в случае класса java.утилита. Коллекции
.
Хотите сказать, я выступают до Java 8 . Теперь, во втором случае, сам интерфейс может иметь методы static
.
Статические методы в Интерфейсах Java 8
Начиная с Java 8, можно создать методы static
на собственную интерфейс :
interface Corredor { static double calculeVelocidade(double tempo, double distancia) { return distancia/tempo; } }
То есть, в этом случае, можно вызвать метод Интерфейса без экземпляр новый объект:
double velocidade = Corredor.calculeVelocidade(5.0, 10.0); System.out.println(velocidade);
Поэтому, даже если у вас есть структуры интерфейсов, можно создавать свои методы static
из интерфейса подходящий .
Есть, конечно, исключения правила, и, возможно, еще есть случаи, так в чем смысл создания класса, утилитарно. Дело в том, что теперь у вас есть ” рассмотреть вариант.
Статические методы в Интерфейсах НЕ являются частью API
Очень важно помнить, что методы, созданные в качестве static
часть API Интерфейс. То есть, они на самом деле являются элементов Интерфейса, . Так же, как методы static
класса являются элементами класс .
Так, код ниже не компилируется, , из-за строк 3 и 7.
public static void main(String[] args) { // NÃO COMPILA - a classe Pessoa não possui o método calculeVelocidade double velocidade = Pessoa.calculeVelocidade(5.0, 10.0); System.out.println(velocidade); // NÃO COMPILA - o objeto instância de Pessoa não possui o método calculeVelocidade double velocidade2 = new Pessoa().calculeVelocidade(5.0, 10.0); System.out.println(velocidade2); } interface Corredor { static double calculeVelocidade(double tempo, double distancia) { return distancia/tempo; } } class Pessoa implements Corredor {}
То есть нет это можно назвать метод static
интерфейс непосредственно в классов, , которые реализуют тот интерфейса.
Статические методы в Интерфейсах являются public и НЕ являются абстрактные
По определению, до Java 8, все методы интерфейса были public
и abstract
, даже если вы не объявит-все так. Посмотрите на пример ниже:
interface Corredor { public abstract void correr(); void correrRapido(); // também é public e abstract }
Методы static
по-прежнему в обязательном порядке public
, но не abstract
. И это имеет смысл, ведь они содержат реализации .
Поздравления ! Теперь вы знает лучше интерфейсы Java 8! Вы можете использовать эти знания для доставки в перспективе решения высокое качество .
А вы? Уже использует статические методы в Интерфейсах? Уже пришлось обслуживать какой-то код, так? Помнит ситуации, в которых вы мог ли выиграли от этого нового параметра? Пусть комментарий !
Также посмотрите видео на YouTube!
Post JAVA 8: Используйте СТАТИЧЕСКИЕ методы в ИНТЕРФЕЙСАХ и упростить ваш код! появился первый в ринальдо.dev .
Оригинал: “https://dev.to/rinaldodev/java-8-utilize-metodos-static-em-interfaces-e-simplifique-seu-codigo-4l5k”