Сообщения

Java. Generics. Wildcards

Изображение
1. Зачем нужны дженерики  Дженерики появились в Java в версии 1.5, для того, чтобы исключить неверную типизацию. Пример, до Java 1.5, были raw types  (сырые типы) . В данном примере objects - это raw type: List objects = new ArrayList(); objects.add( "1" ); objects.add( "2" ); objects.add( "3" ); objects.add( "4" ); objects.add( "5" ); String s0 = (String) objects.get( 0 ); String s1 = (String) objects.get( 1 ); String s2 = (String) objects.get( 2 ); String s3 = (String) objects.get( 3 ); String s4 = (String) objects.get( 4 ); Тут все работает верно и ошибок нет, т.к. мы в массив List добавляем String. Но что будет если мы ошибемся и добавим не строку "4", а число 4: List objects = new ArrayList(); objects.add( "1" ); objects.add( "2" ); objects.add( "3" ); objects.add( 4 ); //тут наша ошибка objects.add( "5" ); String s0 = (String) objects.get( 0 ); String s1 = (String) objects.get( 1 )...

Java. Порядок инициализации полей и блоков класса и Интерфейсов

Разберем порядок инициализации: public class A { { System. out .println( "A class. No static block 1" ); } { System. out .println( "A class. No static block 2" ); } static { System. out .println( "A class. Static block 1" ); } public static String a1 = psv ( "a1" ); public String a11 = pnsv( "a11" ); static { System. out .println( "A class. Static block 2" ); } public static String a2 = psv ( "a2" ); private static String psv(String a) { System. out .println( "A class. Static perem " + a); return a; } private String pnsv(String a) { System. out .println( "A class. No static perem " + a); return a; } static { System. out .println( "A class. Static block 3" ); } { System. out .println( "A class. No static block 3" ); } pub...

Java. Лучшая практика работы с Enum

Изображение
  Решил объединить и написать все в одной статье про Enum, статья не совсем для новичков. Enum - это отдельный тип в Java, иногда его называют перечисление. Проще говоря, это константы, которые связаны между собой - времена года, дни недели, планеты солнечной системы, роли в системе и т.д. Содержание:  Пример простенького Enum  Emun и switch:  Методы Enum  Сравнение Enum  Проблема toString()  Конструкторы в Enum  Методы в Enum  Enum и stream()  EnumSet Пример простенького Enum: public enum UserTypeEnum { ADMIN , MAIN_MODERATOR , MODERATOR , SPECTATOR , BUYER , SELLER ; } Вывести все значения Enum через простой цикл: for (UserTypeEnum role : UserTypeEnum. values ()) { System. out .println(role); } Вывести все значения Enum через StreamAPI: Arrays. stream (UserTypeEnum. values ()) .forEach(role->{ System. out .println(role); }); Emun может быть в switch: public void switchEnum(UserTypeEnum type) { swi...