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

Java 9 Частные методы в интерфейсах

Частные методы Java 9 в интерфейсах, методы частного интерфейса Java 9, изменения интерфейса java 9, функции java 9, частный метод java в примере интерфейса.

Автор оригинала: Pankaj Kumar.

Была выпущена Java 9, и в ней произошло много изменений. Сегодня мы рассмотрим частные методы Java 9 в изменении интерфейсов.

Java 9 Частные методы в интерфейсах

В последних выпусках java произошло много изменений в интерфейсах. Несколько дней назад я написал обширный пост о функциях Java 9 . Мы рассмотрим следующие разделы в этом посте.

  1. Интерфейс Java 7
  2. Изменения интерфейса Java 8
  3. Изменения интерфейса Java 9
  4. Правила для определения частных методов в интерфейсе?
  5. Зачем нам нужны частные методы в интерфейсе?
  6. Вопросы И Ответы Для Интервью

В этом посте я предоставил псевдокод только для понимания этой новой функции, потому что все знают, что такое интерфейс в java и что такое частный метод в Java .

Интерфейс Java 7

В Java SE 7 или более ранних версиях интерфейс может иметь только два вида функций.

  1. Постоянные переменные
  2. Абстрактные методы

Мы не смогли предоставить реализации методов в интерфейсах. Если мы хотим обеспечить комбинацию абстрактных методов и неабстрактных методов (методов с реализацией), мы должны были использовать только абстрактный класс.

   public interface DBLogging{
      String MONGO_DB_NAME = "ABC_Mongo_Datastore";
      String NEO4J_DB_NAME = "ABC_Neo4J_Datastore";
      String CASSANDRA_DB_NAME = "ABC_Cassandra_Datastore";

      void logInfo(String message);
      void logWarn(String message);
      void logError(String message);
      void logFatal(String message);
   }

Здесь мы определили пару констант и общедоступные абстрактные методы. Что делать, если я хотел бы предоставить некоторую реализацию этих методов здесь, скажем, реализацию по умолчанию. Затем мы должны перейти к абстрактному классу в Java 7 или более ранних версиях.

Изменения интерфейса Java 8

Корпорация Oracle представила некоторые новые функции для интерфейса в выпуске Java 8. Это Методы по умолчанию и Статические методы функция.

Да, мы можем писать реализации методов в интерфейсе начиная с Java 8 и далее. Нам нужно использовать ключевое слово по умолчанию , чтобы определить их, как показано ниже.

В Java 8 интерфейс может содержать только четыре вида вещей:

  1. Постоянные переменные
  2. Абстрактные методы
  3. Методы по умолчанию
  4. Статические методы

В изменениях интерфейса Java 8 были добавлены методы по умолчанию и статические методы .

   public interface DBLogging{
      String MONGO_DB_NAME = "ABC_Mongo_Datastore";
      String NEO4J_DB_NAME = "ABC_Neo4J_Datastore";
      String CASSANDRA_DB_NAME = "ABC_Cassandra_Datastore";

      // abstract method example
      void logInfo(String message);

      // default method example
      default void logWarn(String message){
         // Step 1: Connect to DataStore
         // Step 2: Log Warn Message
         // Step 3: Close the DataStore connection
      }
      default void logError(String message){
         // Step 1: Connect to DataStore
         // Step 2: Log Error Message
         // Step 3: Close the DataStore connection
      }
      default void logFatal(String message){
         // Step 1: Connect to DataStore
         // Step 2: Log Fatal Message
         // Step 3: Close the DataStore connection  
      }
      // static method example
      static boolean isNull(String str) {
	System.out.println("Interface Null Check");
	return str == null ? true : "".equals(str) ? true : false;
      }
      // Any other abstract, default, static methods
   }

Приведенный выше пример показывает все, что мы можем сделать в интерфейсах Java 8, обратите внимание на дополнительный набор стандартных и статических методов.

Вы заметили избыточность кода во всех методах ведения журнала? Каждый метод открывает и закрывает соединение самостоятельно. Если мы хотим повторного использования кода, то нам придется перенести этот общий код в общедоступный метод, но тогда он будет доступен для всех других классов.

Что делать, если мы хотим повторно использовать код, но также не хотим раскрывать его другим? Нам придется перейти к абстрактному классу с частным методом для общего кода.

Изменения интерфейса Java 9

Чтобы обеспечить разрешение вышеуказанных сценариев, корпорация Oracle представила частные методы в интерфейсах в выпуске Java 9.

Начиная с Java 9 и далее, мы можем писать частные методы в интерфейсах, используя модификатор private access, как показано ниже (как и другие частные методы).

В Java 9 и более поздних версиях интерфейс может иметь шесть видов функций:

  1. Постоянные переменные
  2. Абстрактные методы
  3. Методы по умолчанию
  4. Статические методы
  5. Частные методы
  6. Частные статические методы

Частные методы и частные статические методы добавляются в изменения интерфейса Java 9.

public interface DBLogging {
	String MONGO_DB_NAME = "ABC_Mongo_Datastore";
	String NEO4J_DB_NAME = "ABC_Neo4J_Datastore";
	String CASSANDRA_DB_NAME = "ABC_Cassandra_Datastore";

	default void logInfo(String message) {
		log(message, "INFO");
	}

	default void logWarn(String message) {
		log(message, "WARN");
	}

	default void logError(String message) {
		log(message, "ERROR");
	}

	default void logFatal(String message) {
		log(message, "FATAL");
	}

	private void log(String message, String msgPrefix) {
		// Step 1: Connect to DataStore
		// Step 2: Log Message with Prefix and styles etc.
		// Step 3: Close the DataStore connection
	}
	// Any other abstract, static, default methods
}

Здесь мы переместили избыточный код в общий закрытый метод, чтобы наши клиенты API не могли их видеть. Обратите внимание на изображение ниже из Eclipse Oxygen, поддерживающее Java 9.

Правила для определения частных методов в интерфейсе?

При написании частных методов в интерфейсе мы должны следовать этим правилам:

  1. Мы должны использовать модификатор private для определения этих методов.
  2. Никаких частных и абстрактных модификаторов вместе, это приведет к ошибке компилятора.
  3. Это не новое правило. Мы не можем использовать комбинацию частных и абстрактных модификаторов, потому что оба имеют разные значения.

    • “Частный” метод означает полностью реализованный метод, поскольку подклассы не могут наследовать и переопределять этот метод.
    • “Абстрактный” метод означает метод без реализации. Здесь подклассы должны наследовать и переопределять этот метод.

    Вот почему частные методы должны иметь полную реализацию.

  4. Частные методы должны содержать тело.
  5. Не меньшая доступность, чем у частного модификатора.
  6. В Java, как мы знаем, private является наименее заметным модификатором доступа. Таким образом, мы не можем уменьшить его видимость с частного на любой другой модификатор.

Эти частные методы интерфейса полезны или доступны только в пределах этого интерфейса. Мы не можем получить доступ или наследовать частные методы от интерфейса к другому интерфейсу или классу.

Зачем нам нужны частные методы в интерфейсе?

Частные методы Java 9 в интерфейсах имеют следующие преимущества.

  1. Нет необходимости писать дублированный код, следовательно, больше возможности повторного использования кода.
  2. У нас был выбор предоставить клиентам только наши предполагаемые реализации методов.

Это все о частных методах Java 9 в изменении интерфейсов.

Ссылка: JEP 213: Монета проекта фрезерования