NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Я использовал QT на нескольких проектах, которые я сделал в C++ на нескольких платформах в течение семи лет. Я думаю, что это работает вполне прилично и определенно было более быстрым для меня для разработки достойного приложения для GUI на Mac, чем переработка через язык, который я не знал (Objective C) в то время.
я думаю, что механизм сигнала/слота немного бросок, но не ужасен. Как только Вы - использование это некоторое время, это не выставочный стопор. Материал соединения легко испортить (или по крайней мере это было), и всегда хорошо проверить возврат на тех, потому что Ваше приложение пойдет весело продвигающееся и не скажет Вам, что не работало.
я никогда не использовал Джамби.
Я использовал QT в течение нескольких лет теперь для коммерческой разработки и был очень доволен им.
Одна из хороших вещей с QT - то, что он обеспечивает большой набор библиотек, а также материала GUI (например, парсинг XML, потоки, объединяясь в сеть), все в последовательном стиле и всех многоплатформенных. Это означает, что мы редко должны пользоваться другими библиотеками, хотя мы действительно используем повышение для некоторых вещей.
Другим очень важным фактором для нас была интернационализация. В предыдущем, основанном на MFC приложении мы должны были поддержать 2 локализованных версии для этих двух языков, которые мы поддерживаем. В нашем основанном на QT приложении у нас просто есть одна версия.
Одной вещью, которая была очень ценна, является доступ к источнику, хотя e, это несколько раз, конечно, не уникально для QT способность проверить спокойный источник, объяснил некоторое странное поведение или дал ключ к разгадке, как достигнуть чего-то.
Мы нашли несколько ошибок в QT, некоторые из которых были прикреплены после создания отчетов к Trolltech. В других случаях они предложили работу вокруг. Они все были довольно неясны и не оказали основное влияние на нашу разработку.
Одна из основных оборотных сторон к QT была бы отсутствием сторонних библиотек для использования в коммерческом применении. Однако QT довольно завершен так для нас, это не была большая проблема, хотя это будет зависеть, на котором типе приложения Вы разрабатываете.
я не использовал Джамби также.
Вот некоторые мои За и против с QT:
Профессионалы:
Межплатформенный
я знаю, что этот всегда используется, но после движения назад и вперед между Windows и Linux с QT, удивительно, как мало я должен сделать для подъема и выполнение. Я думаю, что этому помогает факт, я только использую Vim со спокойным Разработчиком.
QMake
Это - один из моих любимых аспектов QT После выполнения работы в wxWidgets, FLTK, и т.д., я становлюсь настолько усталым от бездельничания с различными системами сборки, и я не хочу вручную создавать свои make-файлы. Я в настоящее время использую CMake на чем-либо кроме QT прямо сейчас, но я думаю, что медленно перемещаю даже QT к CMake. Однако настолько легко начаться с QMake.
QTestLib
я посмотрел на пару других платформ поблочного тестирования C++ и когда я создал свое тестовое использование QTestLib, это чувствовало себя очень похожим на NUnit (C#), и в течение минут у меня было несколько передающих тестов. Я также заметил, что будет очень легко создать мое собственное непрерывная интеграция среда.
Самый Близкий к Java и.Net в производительности
самая большая вещь я слышу/читаю, что люди сказать о C++, "Я могу быть более продуктивным с Java или.Net". От личного опыта я могу получить прототип приложения, работающего в QT с помощью Vim и спокойного Разработчика перед равномерной нагрузкой Visual Studio или Eclipse. Я также получаю очень похожий набор библиотек в QT, который я имею в.Net или Java и если это не там, я могу усилить существующий код C++ там.
Недостатки :
Price
Это - самый большой фактор, о котором я могу думать прямо сейчас. Однако стоимость стоит каждого цента, гм если я знал, сколько центов я должен был накопить, не звоня торговому представителю. Я купил лицензию назад в день, когда они сделали, чтобы их малый бизнес обесценил, и это стоило того тогда, я заплачу в три раза больше, и я думаю, что это - текущая цена.
Разрабатывают где угодно с коммерческой лицензией
, которую я хотел бы иметь возможность разработать на любой платформе, но создать и продать за другую платформу. Например, разработайте на Linux, затем создайте и развернитесь в Windows, если у Вас просто есть коммерческая лицензия Windows. Из того, что я знаю, можно только разработать и создать коммерческое применение на платформе, на которую у Вас есть лицензия.
Зависимость от поставщика
Хорошо вид, это - больше персонального довода "против". Мне не нравится связываться с определенным поставщиком, потому что я отследил сторону направлением компании и направлением продукта. TrollTech был куплен Nokia, эта польза или плохой, я не знаю, но компания, что размер может сделать злые вещи.
я думаю, что сделан на данный момент:). О, я не использовал Джамби, но я действительно интересуюсь выполнением пары проектов прототипа узнать, как легкий это должно использовать плагин, разработанный в C++ с Джамби. Особенно с помощью Джамби в качестве веб-интерфейса с плагинами C++.
, Чтобы быть честным я не читал очень на нем, таким образом, это может быть невозможно или очень легко.
Я использовал QT в предыдущем задании. У меня только был абсолют, самый краткий из контакта с QT несколько лет до этого, таким образом, я был в значительной степени QT newb.
, Когда я запустил, мне сказали выбрать мой язык и среду, но межплатформенная поддержка была желательна. Я попробовал QT и Java, и даже дал C# движение только для heck его. Я дал мне два дня для оценки каждой опции.
, Возможно, я был немного смещен с моей историей, поскольку разработчик C++, но после проведения времени на каждой опции Qt был единственный, который показал любые намеки на то, чтобы быть полезным без долгой кривой обучения.
документация, которой предоставляют QT и примеры приложений, сделала его очень легким для опытного разработчика, но спокойного новичка для подъема и работающий очень быстро. У меня был прототип/макеты UI оконечного приложения, сделанного к концу моего пробного периода. С Java/Eclipse Java/SunStudio и C#/VS.net я испытал затруднения при получении чего-либо нетривиальный случай в то время.
Сигналы/слоты взяли некоторых привыкающих к, но это не было слишком плохо, и я записал некоторые простые обертки для утверждения, когда связи прервались мешать глупым опечаткам остановить приложение. от работы.
другая вещь, которую я любил, состоит в том, что QT имел почти все, в чем я нуждался. Вы называете его - устройство хранения данных, сети, GUI, поточная обработка, контейнеры - QT имеет класс для контакта с ним. Который, по моему скромному мнению, важен, потому что смешивание библиотек может иногда вызывать проблемы.
Наличие исходного кода к QT было большим плюс, один для просто пользы интереса, но также и это позволило мне компилировать QT с помощью компилятора и настроек моего выбора, включая отладочную версию для использования во время разработки.
я также нашел, что поддержка Trolltech была довольно хороша. Я повысил несколько ошибок на QT, одна из которых была зафиксирована и выпущена, пока я все еще работал над проектом (только 6-месячное задание).
единственное отрицание, которое я могу вспомнить, было трудностью при отладке спокойных объектов (использующий VS) - существует спокойный плагин для VS, который может исследовать спокойные объекты, но я использовал бесплатную версию VS, и плагины не работают на него. Но это не было отказом QT.
я не использовал Джамби, так не может прокомментировать.
На C++ Ваши только другие альтернативы являются MFC и wxWidgets. QT / wxWidgets является в основном персональным предпочтением. Я действительно думаю, что QT является чистым дизайном с хорошей документацией.
кварта стоит приблизительно одного месяца зарплаты разработчика, если Вы не используете его для GPL.
Я использовал QT больше двух лет теперь.
Вещи, которые я люблю на QT:
я могу настоятельно рекомендовать Дни разработчика кварты . Если у Вас есть шанс принять участие, то сделайте это! Много хороших и очень интересных переговоров там.
QT является очень хорошей библиотекой, но он имеет дорогую лицензию разработчика на рабочее место, таким образом, это не всегда полезно для всех проектов.
Не используйте его, однако...
Pro: QT имеет дополнительные 3 расположения фазы, где, поскольку WX только допускает 2 в настоящее время (я полагаю, что они планируют сделать 3 фазы, просто еще не работали он в).
Одной из больших проблем с использованием разметок является статический текст и обертывание. WX спрашивает, насколько большой Ваша минимальная ширина/высота и части экран, QT имеет опцию сказать, как широкий делают Вы хотите, как высоко делают необходимо быть то, если широкие X. Это позволяет Вам выражать поток страницы намного лучше.