Другое событие 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));
}
Обратите внимание, что любой библиотекой C можно пользоваться с D, поскольку D полностью поддерживает ABI C. D имеет некоторую ограниченную поддержку библиотек C++, хотя не библиотеки шаблонов C++.
Я пользовался библиотеками танго + dfl и немного мое собственное. Документация танго превосходна. DFL не плохо. Да я действительно использовал танго затем, но попробованный phobos сначала. Готовый к большим приложениям? зависит от того, что Вы имеете в виду. В производственном использовании я только использовал его для frontends и updaters. До сих пор я только использовал энергию, чтобы кодировать и соблазнить для разработки gui, потому что я не мог найти правильного язя для меня.
Кроме оперативной библиотеки (в моем случае, Танго), я не использую, любой внешний освобождает.
документация Танго достойна. Это - крупная библиотека, и я сказал бы, что существует документация приблизительно для 80% из него, первое, что пришло на ум. И тех зарегистрированных классов я сказал бы, что приблизительно 80% из них завершены и корректны. Учитывая размер библиотеки, сумма документации является впечатляющей. Но это все еще не вполне, где это должно быть. Для реального использования Танго прямо сейчас, необходимо считать исходный код (который является чистым и правильно написанным).
я не знаю, готов ли D к большим приложениям. Мое приложение является довольно небольшим, и я довольно доволен им. С точки зрения дизайна языка я предпочитаю C# (или Java до меньшей степени). В сравнении дизайн языка D кажется мне несколько неуклюжий и неловкий. Действительно, единственная причина, я выбрал D для этого проекта, состояла в том потому что A) я должен был смочь скомпилировать свой код в DLL, который мог быть связан произвольным третьим лицом; B) мне был нужен мой код, чтобы быть портативным между Победой, Lin и Mac; и C) я не хотел писать в C/C++.
я использую Спуск (плагин Eclipse IDE). Это обеспечивает довольно хорошую подсветку синтаксиса и навигацию проекта. Автоматическое заполнение все еще оставляет желать лучшего, и интеграции с "разработчиком" как dsss все еще недостает. Но это лучше, чем блокнот :)
я использую Танго, Jive stacktrace, dconstructor, дунит и самонасмешка. Я поддерживаю последних трех из тех, все же.
Танго имеет разумную документацию. Я побежал на несколько мест, где это имело меньше документации, чем мне было нужно; в этих случаях я сделал билеты, запрашивающие лучшую документацию. Jive не требует документации. Я надеюсь другие, я использую, имеют разумную документацию; я работал над этим немного.
Да, я использую Танго.
можно создать крупные приложения в ФОРТРАНЕ; D лучше. Основным вопросом является поддержка библиотеки. Вещи как криптография не хорошо поддерживаются в D, насколько я знаю. Но было довольно легко найти все, в чем я нуждался. Что-либо еще, можно, вероятно, записать обертку вокруг существующей библиотеки в C без большой проблемы.
я обычно использую энергию, но теперь я переключаюсь на Спуск. Его автозавершение намного лучше, чем Vim.