Другое событие 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));
}
В Rails-Core есть тема об этом - http://groups.google.com/group/rubyonrails-core/browse_thread/thread/88519ef5a53088a1/c01ba447c6dc0de7?lnk=raot
Цитировать Иегуду Каца
«Есть вещи, которые код C требует в 1.9, которые замедляют работу. Одним из таких примеров является повторная проверка $ LOAD_PATH, чтобы убедиться, что все это расширяется при каждом требовании. Это то, что должно быть решено с помощью ruby-core. Я открою тикет на Redmine, если его еще нет. "
Я также испытываю эту проблему, и проблема $ LOAD_PATH кажется потенциальной причина. Будем надеяться, что это скоро исправят.
Попробуй связать (в unix), dtruss (в mac) свою команду (хотя может понадобиться sudo) Он покажет вам, где процесс тратит свое время. Обратите внимание, где он останавливается. Это определенно не нормально.