Я просто наткнулся на ошибку и спрашиваю себя, есть ли лучший способ сделать это.
Сначала у меня был этот код.
// read lines out of a file and do something with it in foo
BufferedReader br = new BufferedReader (new FileReader ("bla.txt"));
String line;
while ((line = br.readLine ()) != null)
{
foo (line);
}
br.close ();
Тогда я изменил это. Введен список вместо работы в цикле чтения.
BufferedReader br = new BufferedReader (new FileReader ("bla.txt"));
List <String> lst = new ArrayList <String> ();
String line;
while ((line = br.readLine ()) != null)
{
lst.add (line);
}
br.close ();
for (String s : lst)
{
foo (line); // !!!
}
Пожалуйста, игнорируйте тот факт, что это не настоящая оптимизация. Код - это просто упрощение моего вопроса.
При использовании коллекции я допустил ошибку. Я сохранил foo (строку) вместо foo (s).
Это не ошибка компилятора, но это неправильно для моего алгоритма.
Какова хорошая стратегия, позволяющая избежать этой проблемы, если ее модульность (использование функций и т. Д.) Не подходит?
Я думаю об ограничении объема строки, помещая ее в блок.
BufferedReader br = new BufferedReader (new FileReader ("bla.txt"));
List <String> lst = new ArrayList <String> ();
{
String line;
while ((line = br.readLine ()) != null)
{
lst.add (line);
}
br.close ();
}
for (String s : lst)
{
foo (line); // error now
}
Но я не уверен, что это общая и хорошая стратегия. Любые предложения для такой проблемы? Спасибо!