В C# я почти всегда использую using
шаблон при работе с потоковыми объектами. Например:
using (Stream stream = new MemoryStream())
{
// do stuff
}
При помощи using
блок, мы удостоверяемся, чтобы расположили, сразу назван на потоке после того, как тот бок кода выполняется.
Я знаю, что Java не имеет эквивалента a using
ключевое слово, но мой вопрос то, что при работе с объектом как a FileOutputStream
в Java мы должны сделать какое-либо обслуживание, чтобы удостовериться, что это расположено? Я смотрел на этот пример кода, и я заметил, что они не делают никого.
Я просто задался вопросом, чем лучшая практика была для Java в обработке потоков расположения, или если это достаточно хорошо, чтобы позволить сборщику "мусора" обработать его.
Вы просто должны поместить этот кодекс в cellForRowAtIndexPath
, Чтобы отключить собственность выбора клетки: (выявляя клетку)
cell.selectionStyle = UITableViewCellSelectionStyleNone;
, Чтобы включить способности выбрать (выявляют) клетку: (укол клетки)
// Default style
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
// Gray style
cell.selectionStyle = UITableViewCellSelectionStyleGray;
Примечание, что клетка с selectionStyle = UITableViewCellSelectionStyleNone;
все еще заставит UI звонить didSelectRowAtIndexPath
, когда он затронут пользователем. Чтобы избежать этого, сделайте, как предложено ниже, и установите.
cell.userInteractionEnabled = NO;
вместо этого. Кроме того, следует задать для cell.textLabel.enabled = NO;
серый цвет предмета.
Кроме того, не создает скрипты bin для различных платформ. maven-assembly-plugin может создавать (пакеты (пакеты )) {tar.gz, застежка -молния}) для распространения. Они настраиваются через assemble.xml. Вы указываете, какие файлы входят (с какими параметрами (chmod)) и т.д. Он также может фильтровать файлы (искать/заменять значения в них). и т.д.
-121--3375383-обычно необходимо сделать следующее:
InputStream stream = null;
try {
// IO stuff - create the stream and manipulate it
} catch (IOException ex){
// handle exception
} finally {
try {
stream.close();
} catch (IOException ex){}
}
Но apache commons-io предоставляет IOutils.closeQuietly (поток);
, которое помещено в наконец
, чтобы сделать его немного менее уродливым. Я думаю, что в Java 7 будет некоторое улучшение.
Обновление: Джон Скит сделал очень полезное замечание о том, что фактическое обращение с исключением редко возможно в самом классе (если только оно просто не регистрируется, но на самом деле оно не обрабатывается). Так что вам лучше объявить ваш метод бросить это исключение вверх, или обернуть его в пользовательское исключение (за исключением простых, атомных операций).
Если кому-то интересно, новый синтаксис в Java 7 может быть следующим:
do (BufferedInputStream bis = ...; BufferedOutputStream bos = ...) {
... // Perform action with bis and bos
}
(см. предложение Джошуа Блоха )
В Java (к сожалению) нет эквивалента оператора using
, хотя были некоторые мысли о включении чего-то подобного в Java 7. (Кажется, в последний раз, когда я смотрел, они "вышли", но мне трудно следить за статусом функций в Java 7. )
В основном вам нужен блок try/finally:
InputStream stream = new FileInputStream(...);
try {
...
} finally {
stream.close();
}
Затем возникает проблема, что делать с IOException
в случае неудачи close(), и проблема исключения, которое "перезаписывает" любое исключение, выброшенное основной частью кода - хотя последнее является проблемой и в .NET.
Guava делает это немного проще с помощью класса Closeables
со статическими методами close
и closeQuietly
, которые справляются с тем, что stream
является null (в случае, когда вы объявляете переменную до блока, но присваиваете значение внутри блока try).