Как стать автором
Обновить

Комментарии 17

Относительно очевидные вещи, но интересно преподнесенные) спасибо за статью, хоть сейчас и не пятница, но формат близок
Благодарю
Я в шоке! 8 миллионов констант в одном файле, и компилятор его съел.
Как долго вообще шла компиляция? Меняется ли заметно скорость компиляции при использовании такого большого класса?
Не знаю как у автора, но из моей практики могу сказать следующее — десять больших классов компилируются быстрее чем сотня более мелких, выполняющую ту же роль. Размеры больших классов близки к предельному.

потому как к ФС происходит меньше обращений

Комп: 4 ядра, i5-2500 CPU @ 3.30GHz, оперативка 16G
Исходник: 85 мегабайт
Время компиляции: Total time: 05:04 min
Простите конечно, но определение Разраб меня как Разработчика обижает(
PS. Разработчики такие ранимые)
Ок. Учту. Слово это конечно с душком..., как известно раз_раб, два_раб… :)
НЛО прилетело и опубликовало эту надпись здесь
А я еще я в предыдущем вашем посте написал вот такой коммент коммент.

И судя по ссылке оттуда выходит, что не нужно бросать исключения в конструкторе энума. Это лишний код. На который вам нужно писать лишние тесты (по-хорошему).

Наглядно написанное ораклом ссылку демонстрирует вот такой пример:

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public final class Test {
    public static void main(String[] args) {
        try {
            final Constructor<?> qwertyConstructor = Qwerty.class.getDeclaredConstructors()[0];
            qwertyConstructor.setAccessible(true);
            System.out.println("I've got " + qwertyConstructor.newInstance());

            final Constructor<?> timeUnitConstructor = java.util.concurrent.TimeUnit.class.getDeclaredConstructors()[0];
            timeUnitConstructor.setAccessible(true);
            timeUnitConstructor.newInstance();
            System.out.println("You'll never see me.");
        } catch (IllegalAccessException | InvocationTargetException | IllegalArgumentException | InstantiationException x) {
            x.printStackTrace();
        }
    }
}

class Qwerty {
    private Qwerty() {
    }
}


I've got ololo.Qwerty@45ee12a7

java.lang.IllegalArgumentException: Cannot reflectively create enum objects
	at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
	at ololo.Test.main(Test.java:15)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

И судя по ссылке оттуда выходит, что не нужно бросать исключения в конструкторе энума. Это лишний код.

В этом тоже определенный сарказм, до точки с запятой в LanguageUtils, неожиданно:
    SHAPITO_CIRCUS;

Ясно, что это апофеоз тупости, но все же, конструтор-смотрелка, все сделает как надо :)
Я не понимаю, о чем вы. Где SHAPITO_CIRCUS?
Добавить разумеется в класс LanguageUtils, если отсутствует такой конструктор-старожил — плевое дело, если Вы понимаете о чем я :)
Удалить такой конструктор тоже плевое дело.
Хотите живой пример?
конечно
public enum LanguageUtils {
    SYNCH_OBJECT;
    /** java-doc */
    public static void doWork1() {
        // много код здесь, а потом
        synchronized (SYNCH_OBJECT) {
            // doSomeReadWriteOperation1 - внутри изменение/чтение общего объект N1
        }
    }
    /** java-doc */
    public static String doWork2(String name) {
        // много код здесь, а потом
        synchronized (SYNCH_OBJECT) {
            // doSomeReadWriteOperation2 - внутри изменение/чтение общего объект N1
        }
        return "";
    }
}
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории