Нет хорошего способа сделать то, что вы хотите; для чего-то такого размера чтение значений из файла данных (или вычисление их, если это было возможно) - намного лучшее решение в целом - более удобное в обслуживании, намного быстрее компилировать и запускать, легче читать и редактировать, с меньшей вероятностью вызывает проблема с инструментами сборки и фреймворками…
Если вы позволите компилятору завершить sh, его вывод сообщит вам о проблеме. (' Всегда читать сообщения об ошибках ' должно быть одним из кардинальных правил разработки!)
Я попробовал версию горячей клавиши, используя apply()
, и в конечном итоге это выдало эту ошибку:
…
Caused by: org.jetbrains.org.objectweb.asm.MethodTooLargeException: Method too large: TestKt.main ()V
…
Есть проблема: MethodTooLargeException . JVM допускает только 65535 байтов байтового кода в одном методе; см. этот ответ . Это предел, с которым вы сталкиваетесь: если у вас слишком много записей, его код превысит этот предел, и поэтому его нельзя будет скомпилировать.
Если бы вы были настоящим мазохистом, вы, вероятно, могли бы Обойти это до некоторой степени, разделив инициализацию между многими методами, сохраняя код каждого из них как раз под пределом. Но, пожалуйста, не надо! Ради ваших коллег, ради вашего компилятора и ради вашего собственного психического здоровья ...