string s = (string)o; // 1
Броски InvalidCastException, если
o
неstring
. Иначе, присваиваетсяo
кs
, даже еслиo
null
.string s = o as string; // 2
Присваивается
null
к [1 110], еслиo
неstring
или еслиo
null
. Поэтому Вы не можете использовать его с типами значения (оператор никогда не мог возвращатьсяnull
в этом случае). Иначе, присваиваетсяo
к [1 117].string s = o.ToString(); // 3
Причины NullReferenceException, если
o
null
. Присваивает любойo.ToString()
возвраты к [1 121], неважно, каков типo
.Использование 1 для большинства преобразований - это просто и просто. Я склоняюсь к почти никогда использованию 2 с тех пор, если что-то не будет правильным типом, я обычно ожидаю, что исключение произойдет. Я только видел потребность в этом пустом возвратом типе функциональности с плохо разработанными библиотеками, которые используют коды ошибки (например, пустой указатель возврата = ошибка, вместо того, чтобы использовать исключения).
3 не бросок и просто вызов метода. Используйте его для того, когда Вам будет нужно строковое представление нестрокового объекта.
Используя плагин enclojure , я могу установить точку останова в редакторе, а затем запустить отладчик внутри Netbeans. Точки останова Java в проекте срабатывают, однако точки останова clojure завершаются ошибкой, например:
Не удалось отправить точку останова LineBreakpoint defpackage.clj: 8, причина: информация о номере строки отсутствует в файле класса com.yourcompany.defpackage.
Invalid LineBreakpoint defpackage.clj: 8
Глядя на сайт, можно предположить, что поддержка отладки может быть еще не полностью доступна.