Комментарии 17
Относительно очевидные вещи, но интересно преподнесенные) спасибо за статью, хоть сейчас и не пятница, но формат близок
Я в шоке! 8 миллионов констант в одном файле, и компилятор его съел.
Как долго вообще шла компиляция? Меняется ли заметно скорость компиляции при использовании такого большого класса?
Как долго вообще шла компиляция? Меняется ли заметно скорость компиляции при использовании такого большого класса?
Не знаю как у автора, но из моей практики могу сказать следующее — десять больших классов компилируются быстрее чем сотня более мелких, выполняющую ту же роль. Размеры больших классов близки к предельному.
Комп: 4 ядра, i5-2500 CPU @ 3.30GHz, оперативка 16G
Исходник: 85 мегабайт
Время компиляции: Total time: 05:04 min
Исходник: 85 мегабайт
Время компиляции: Total time: 05:04 min
Простите конечно, но определение Разраб меня как Разработчика обижает(
PS. Разработчики такие ранимые)
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 "";
}
}
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Enum-Всемогущий