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, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Проект VS является своим собственным объектом. Это создаст и скомпилирует отдельно. Решением является просто способ содержать несколько проектов. Для проектов не обязательно нужны другие проекты скомпилировать (хотя, они могут зависеть от других проектов).
Это просто позволяет Вам концептуально собрать в группу проекты в один Большой Проект. Например, у Вас может быть отдельный проект тестирования. Это зависит от кода из фактического проекта и должно быть сохранено вместе с фактическим проектом, но это не должно быть в том же exe/dll.
Каждый проект VS создает единственный EXE или DLL. Решением является просто набор связанных проектов.
Так VS project:Eclipse проект:: VS solution:Eclipse рабочая область.
@Thomas Owens:
Да, некоторые (большинство?) у людей, использующих Eclipse, есть больше чем одна рабочая область. Это - то, что удивило меня больше всего, когда я сначала начал использовать Eclipse, таким образом, я отвечаю здесь для создания этого комментария более видимым.
Другой способ посмотреть на него, решением является контейнер для проектов. Для большей части моей работы я создаю каждый уровень как проект в решении, таким образом, мое дерево похоже:
Ваш пробег может варьироваться
Вещь, которая может отбрасывать Вас, следующая:
В VS2003 все имело файл Проекта и файл Решения. Если бы у Вас было Решение с одним Проектом, то Вы могли бы открыть Solution и видеть один Проект. При открытии Project он попытался бы создать новый файл Решения для содержания Проекта. Но веб-проекты и проекты Winform все имели Проекты и Решения.
В VS2005 это изменилось немного - по умолчанию теперь, веб-проекты больше не имели файлы Проекта. Они получили обратную связь от некоторых веб-разработчиков, которым не нравились файлы Проекта - их взятие было то, что, если файл находится в каталоге, это - часть приложения. После поставленного VS2005 они получили больше обратной связи от разработчиков, которым действительно нравилось понятие файла Проекта, таким образом, они исправили его, въезжают задним ходом. Это - "веб-сайт" по сравнению с "веб-приложением" в VS2005 (и я не могу помнить, который является который теперь).
Кроме того, в VS2005, если у Вас есть Решение, открытое только с одним Проектом, Вы не будете видеть в Проводнике Решения, что существует даже Решение вообще, Вы будете только видеть Проект (как будто это не было в Решении). Только после добавления второго Проекта будет Вы видеть, что существует Решение, содержащее их обоих.
Так в основном Вы были на правильном пути - Решения и работа Проектов то же в Visual Studio, как они сделали в Eclipse, это - просто некоторые причуды, которые делают вещи, путающие.
Существует слишком много видов веб-проектов в Visual Studio 2008. Существуют Проекты веб-сайта по сравнению с веб-приложением Проекты, и они ограничивают Вас по-разному. Это - хороший пример Microsoft, обеспечивающей слишком много вариантов вместо того, чтобы фокусироваться на одном эффективном решении. Даже в опции Project веб-сайта, существует по крайней мере 3 различных способа скомпилировать Ваше приложение.
Я нашел что, не всегда видя решение в Проводнике Решения, чтобы быть раздражающим. Существует установка в Опциях->, Проекты и Решения-> Общий названный "Всегда Показывают Решение", которое было удобно.