Рубрики
Без рубрики

ЯВА 8: Используйте СТАТИЧЕСКИЕ методы в ИНТЕРФЕЙСАХ и упростить ваш код!

Métodos статические интерфейсы электронной почты делают Java 8 упрощенным способом, см. кодиго, алем де… Помеченный как интерфейс, java, java8.

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