условная точка останова в затмении не работает для локальной переменной? - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь отладить мой java код. Я устанавливаю условную точку останова. Однако при отладке отображается ошибка «Условная точка останова содержит ошибки компиляции».

Ниже приведен мой фрагмент кода:

public RecipientsDTO readRecipientsFromStream(InputStream inputStream) {

    ICsvListReader listReader = null;
    List<Object> list;
    Set<String> values = new HashSet<>();
    int numberOfDuplicates = 0;
    try {
        listReader = new CsvListReader(new InputStreamReader(inputStream),
            CsvPreference.STANDARD_PREFERENCE);
        while (listReader.read() != null) {
            CellProcessor[] processors;
            if (listReader.length() == SINGLE_COLUMN_PROCESSOR.length) {
                processors = SINGLE_COLUMN_PROCESSOR;
            } else {
                processors = TWO_COLUMN_PROCESSOR;
            }
            list = listReader.executeProcessors(processors);
            String recipient = (String) list.get(0);                
            if (!recipient.contains("@")) {
                recipient = recipient.replaceAll("[ \\-\\(\\);]", "");
            }
            if (!values.contains(recipient)) {
                values.add(recipient);
            } else {
                numberOfDuplicates++;
            }
        }
    } catch (SuperCsvConstraintViolationException e) {
        log.error("Error parsing csv: {}", e.getMessage());
        throw new ParsingFileException(String.format("At Line Number: %s, Message: %s",
            listReader != null ? listReader.getLineNumber() : "Unknown", e.getMessage()));
    } catch (Exception e) {
        log.error("Error parsing csv: {}", e.getMessage());
        throw new ParsingFileException();
    }

    return new RecipientsDTO().numbers(values).numberOfDuplicates(numberOfDuplicates);
}

Это моя условная точка останова.

recipient.equals("1")

Однако это показывает, что получатель не может быть определен:

enter image description here

Ниже приведен мой скриншот условной точки останова из затмения:

enter image description here

1 Ответ

3 голосов
/ 07 января 2020

Условное выражение точки разрыва строки вычисляется до того, как код достигнет строки. Поскольку recipient определено в строке 65, вы не можете использовать это имя переменной в точке останова для строки 65.

Чтобы исправить это, вы можете переписать выражение точки разрыва строки как:

"1".equals(list.get(0))

или переместите точку останова на линию 66.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...