Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
После многих попыток основанной на плагине архитектуры Java (что точно, что Вы, кажется, ищете), я наконец нашел, что JSPF был лучшим решением для кода Java5. это не имеет огромных потребностей OSGI как решения, но вместо этого довольно просто в использовании.
OSGI является, конечно, допустимым способом пойти. Но, принятие Вас не должно разгружаться для перезагрузки плагина, оно могло бы использовать молоток для взламывания гайки.
Вы могли использовать классы в 'java.util.jar', чтобы просканировать каждый файл JAR в Вашей папке плагинов и затем использовать 'java.net. URLClassLoader' для загрузки в корректном.
Если Вам "просто" нужен один компонент, чтобы быть сменными, достаточно просто инстанцировать классов на основе метаинформации, например, считать через classloaders META-INF/информацию от различных банок, которые находятся на Вашем пути к классу или в определенном сменном каталоге.
OSGi, с другой стороны, обеспечивает средства структурировать Ваше целое приложение. Если у Вас уже есть большое Настольное приложение, которому нужна одна сменная часть, это было бы крутой кривой обучения. При запуске пробела с того, что будет Настольным приложением, OSGi обеспечивает средства для модульного исполнения целого приложения. Это об "изоляции компонентов" и независимости модулей.
Felix Apache обеспечивает хороший запуск, если Вы хотите спуститься по маршруту OSGi. Это могло бы выглядеть сложным и тяжелым, но это - то, только потому, что каждый не привык к тому уровню изоляции между модулями. Это раньше было так легко просто назвать любой открытый метод...
Вы думали об использовании OSGi как сменная платформа? С OSGi Вы можете обновить/заменить, загрузить или разгрузить Ваши модули по требованию.
Один подход, который я рассматриваю, имеет мой запуск приложения легкий контейнер OSGi, который, если я понимаю правильно, смог бы обнаружить, какие сменные файлы JAR существуют в обозначенной папке, которая в свою очередь позволила бы мне перечислить их, чтобы пользователь выбрал из. Действительно ли это выполнимо?
Я также нашел эту статью Richard Deadman, но это выглядит немного датированным (2006?) и упоминания ни один OSGi (по крайней мере, не по имени), ни java.util.jar
пакет