Другое событие 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));
}
Ответы на Ваш другой вопрос предлагают, чтобы Вы не фиксировали никакой , генерировал файлы к подрывной деятельности. DLLs в папке мусорного ведра часто создаются как часть приложения, поэтому, они должны быть повторно созданы, а не сохранены в подрывной деятельности.
, Если DLLs являются третьей стороной DLLs, для которого у Вас нет исходного кода тогда, я сохранил бы их в подрывной деятельности. Необходимо поместить все в подрывную деятельность, которая необходима для воссоздания приложения. Это означает Ваш исходный код и сторонние библиотеки или программы.
Я всегда регистрируюсь в стороннем DLLs (в папку 'lib') так, чтобы приложение могло создать и работать от нового контроля. Я думаю, "не регистрируются в двоичных файлах" правило, относится к двоичным файлам, которые сгенерированы исходным кодом, в котором Вы зарегистрировались.
Просто, потому что файл является двоичным, не делает Вас, Вы не должны проверять его он. Предупреждение должно быть против регистрации в производных объектах в репозиторий. Необходимо всегда быть в состоянии создать все производные объекты снова из источников. Это может означать, что у Вас должен быть сторонний двоичный файл в репозитории.
Инструкции просты:
-
* Программы, инструменты, пакеты обновления являются очевидным исключением к этому правилу. Но они должны быть перечислены в файле, который является имеющим версию.
Как сказанный Ben. Я не помещаю двоичные файлы, которые собираются измениться часто в управление исходным кодом. Но 3-й dll's части, ya они заканчивают в папке lib на моем svn также.
Я включаю, любой потребовал DLLs в каталоге DLL в проекте, и сошлитесь на них оттуда (с копией к локальному). Тогда они могут или быть включены в тот же репозиторий/папку или введены в использование svn-внешнего от удаленного местоположения (если они совместно используются через несколько проектов).
Идеально, репозиторий SVN должен потребовать, чтобы каждый файл должен был создать цель. Так, чтобы, если Вы купили совершенно новый компьютер, установил Ваш компилятор и SVN и затем проверил репозиторий - Вы могли создать, не имея необходимость находить любые другие зависимости. Таким образом, сторонние библиотеки были бы помещены в репозиторий, но цели не.
исключение к этому было бы то, если Вы - SVNing изображения установки. Мы делаем это здесь, но в различном наборе репозиториев, которые используют наши производственные парни (программисты не делают).
Если двоичными файлами Вы имеете в виду исполняемые файлы, лучшая практика должна повторно создать их из источника - если источник доступен. Если двоичными файлами Вы имеете в виду нетекстовые файлы, я могу сказать Вам, что использую SVN все время для хранения нетекстовых файлов (jpg изображения, файлы Visio, bmp файлы, документы MS Word 2003 года с изображениями и схемами, файлами Проекта MS и подобными файлами. У меня никогда не было проблем с повреждением или чем-либо как этот. И IT очень удобен, чтобы сохранить и управлять всем в SVN.
На самом деле SVN делает двоичные файлы хранилищ, намного более эффективные, чем CVS, поскольку больше информации видит SVN-FAQ