Java 9 Приватные методы в интерфейсе
Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 9. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!
1. Введение
С приходом Java 9 стало возможным создание приватных методов в интерфейсах, делая их логическим продолжением default и static методов. Зачем нужны еще и приватные методы? К примеру, поддержание clean code посредством вынесения общей логики default и static методов в приватные.
2. Создание и ограничения
Приватные методы могут быть либо не статическими либо статическими, так же они обязаны иметь реализацию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
interface Worker { default String work() { return amILucky() ? "Работать и еще раз работать" : "Кто не работает, тот ест"; } default String generateIdea() { return amILucky() ? "А что если сделать ..." : "Вот если бы можно было ..."; } private boolean amILucky() { return Math.random() > 0.5; } static void think() { String thought = getThought(); System.out.println(thought); } private static String getThought() { return "Думаю думаю, да все никак не выдумаю"; } } |
3. Варианты использования
3.1 Логирование
Хотим "разгрузить" наши default методы? Легко.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
interface DummyLogger { default void debug(String msg) { log(msg, "DEBUG"); } default void info(String msg) { log(msg, "INFO"); } default void warn(String msg) { log(msg, "WARN"); } default void error(String msg) { log(msg, "ERROR"); } default void epicFail(String msg) { log(msg, "EPIC_FAIL"); } private void log(String msg, String lvl) { System.out.println("Dummy logger, " + LocalDate.now()); System.out.println("Level: " + lvl); System.out.println("Message: " + msg); } } |
3.2 Валидация
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
interface UserForm { String getName(); String getSurame(); int getAge(); static boolean isValidName(String name) { return isEmpty(name); } static boolean isValidSurname(String surname) { return isEmpty(surname); } private static boolean isEmpty(String str) { return str != null && !str.isEmpty(); } static boolean isValidAge(int age) { return age > 18; } } |
Вот так легко и непринужденно интерфейсы становятся всё функциональней, а жизнь разработчика - лучше.
На этом статья заканчивается, но не новинки Java 9. Спасибо, что были с нами 🙂
Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.