Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Используйте cgo для вызова кода C, который создает экземпляр JVM, используя API вызова JNI , и вызывается в Java-код с использованием интерфейса JNI. Поскольку goroutines может технически переключаться между собственными потоками, вам, вероятно, придется очень внимательно относиться к тестированию, подключению и отсоединению потоков к JVM при входе и выходе из кода Go и / или дополнении с использованием собственной библиотеки потоков, такой как pthreads.
Свяжите свой Java-код с «сервером» и вызовите его с помощью RPC, например «rest / soap / бережливость» и сохраните сервер. Я не знаю ни одной системы, которая автоматизирует это для вас.
Вы можете создать класс управления Java на Java, который способен разговаривать с вашей программой Go, и который вы запускаете один раз, и будете делать соответствующие вызовы на другой код Java, когда ваша программа Go запросит их.