Если исходить из Ваших условий — приватный конструктор и статический метод в классе, который осуществит нужные проверки и вернет корректный обьект или ошибку.
>>Ну я бы поспорил
Я ведь написал — в некоторых ситуациях очень применимы.
Здесь предполагалось что часть модели Plan.status не может быть null. В виду constraint БД.
В случае если вы создаете обьект с пустым конструктором и инициализация полей Вам не нужна. А в пределах приложения это может быть существенно. В любом случае Вы правы, этот момент нужно подправить.
Далеко не все java проекты проекты используют стэк из spring, hibernate и им подобных и далеко не все java проекты промышленные. Чаще всего это аутсорс и большие компании. А в маленьких игровых проектах и специализированных приложениях вполне обходятся без всего этого груза.
Да, оптимизация происходит, но не в случае что я описал. Компилятор оптимизирует код, но в своем понимании: s = s + fileds[i]
транслируется в s = new StringBuilder(s).append(fields[i]).toString();
Я ведь написал — в некоторых ситуациях очень применимы.
Здесь предполагалось что часть модели Plan.status не может быть null. В виду constraint БД.
Этот случай больно уж редкий.
measure("valueOf", doValue);
Thread.yield();
measure("new", doNew);
Thread.yield();
measure("valueOf", doValue);
Thread.yield();
measure("new", doNew);
Вот результат:
valueOf elapsed 3006, rps 332667000
new elapsed 10259, rps 97475000
valueOf elapsed 2912, rps 343406000
new elapsed 10268, rps 97389000
Как раз почти 3.5 раза
Long l = 100L;//это тоже самое что Long.valueOf(100L);
Ну так и топик не называется «повышение проивзодительности java приложений».
Зависит всетаки от значения IntegerCache.high, а не от кода
Это не так. Метод
getAndRemoveCacheProperties
s = s + fileds[i]
транслируется в
s = new StringBuilder(s).append(fields[i]).toString();