Я предполагаю, что ограничение связано с тем, как реализовано new String("str")
.Инициализация члена с литеральной строкой может быть выполнена с записями в постоянном пуле, но new String("str")
требует фактического выполнения кода, поэтому это должно быть выполнено с фактическими байтовыми кодами в статическом методе init.
Внутренний винтСхема классов вызывает у меня головную боль, когда я просто думаю об этом (это на самом деле внутренняя ошибка), поэтому я не могу точно объяснить, в чем проблема, но я подозреваю, что статический метод init запускается в неподходящее время в ситуации, описанной выше, поэтому либорезультаты не являются надежными, иначе система не сможет обработать исключения, возникающие из-за ошибок в статическом методе init.