Методы 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”