В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
Мне нравится redmine за это: http://www.redmine.org. Единственная вещь, которую это пропускает от Ваших критериев, голосует, но мог бы даже быть плагин для этого.
Trac также популярен (http://trac.edgewall.org), но он испытывает недостаток в поддержке агрегирования данных через проекты.
Попробуйте GForge, это - ветвление SourceForge и имеет большинство его функций.
Я соглашаюсь, Trac должен работать. IMHO, настраивающий Подверсию, должен снисходительно отнестись к относительно Windows также, существуют великие клиенты Windows для него (tortoiseSvn), и Trac работает на Python, таким образом, это будет работать над Windows также.
SourceForge Enterprise Edition 4.4 доступен бесплатно максимум 15 пользователям. Мы используем его для нашей группы разработчиков и другой группы разработчиков, где я работаю.
Это работало отлично для нас. Это имеет подверсию, и cvs встроил (какой бы ни Вы хотите использовать). Если Вы планируете доступ к нему по Интернету, Вы могли бы хотеть включить HTTPS. Я должен был сделать немного обмана, чтобы заставить HTTPS работать правильно (находящий, что правильные пакеты CentOS устанавливают). Если бы Вы хотели использовать это решение с HTTPS, то я не возражал бы, если бы Вы отправили мне обращающееся за помощью сообщение.
Это идет с VM для VMware Player: http://www.collab.net/downloads/sfee/index4.4.html
Другими преимуществами Sourceforge Enterprise являются эти плагины. Существуют дополнительные плагины для Visual Studio, которая может быть найдена здесь и здесь.
Я согласился бы на предложении Trac. Я использую его и для проекта с открытым исходным кодом и для внутреннего проекта. Это имеет достойное отслеживание ошибки и интеграцию с Подверсией, которая позволяет ссылки между билетами и подверсией checkins. Это также имеет интегрированную Wiki, которая может быть несколько полезной для документации. Хотя мы не используем его для голосования / общественные функции типа, я знаю, что существует много дополнений к нему, которые могли бы служить этой цели.
Что относительно Trac? Это довольно просто, но делает это - Job для большого количества проектов С открытым исходным кодом.
Assembla и BeanStalk хороши, у обоих есть вещи как; Wiki, обсуждение, предупреждения, чат, покупка билетов, Trac, Мерзавец и Подверсия
Панель запуска поддерживает хостинг кода и контроль версий, отслеживание ошибок, чертежи, ответы, опросы, переводы и т. Д.
Панель запуска используется проектом Ubuntu.
Несколько недель назад Launchapad был выпущен с открытым исходным кодом.
Мне просто интересно было то же самое, что-то вроде Trac, но в .NET, после быстрого поиска в GOOGLE (я никогда не пробовал эти инструменты) я нашел
sharpforge (это больше не выглядит бесплатным!)
Я нравится, как выглядит сайт .netTiers. Они используют винтовой вики. Это совершенно бесплатно, если вы выполняете все положения GPLv2.