Дизайн с практическими рекомендациями для расширения

Моя установка Eclipse не смогла найти log4j.properties при запуске тестов JUnit из Eclipse, хотя файл был расположен в src/test/resources.

Причина в том, что Eclipse ( или соединитель m2e ) не копировал содержимое из src/test/resources в ожидаемую выходную папку target/test-classes - основная причина заключалась в том, что в свойствах проекта в Java Build Path - > вкладка Источник -> Исходные папки на пути сборки -> src / test / resources , так или иначе появилась запись Excluded: **. Я удалил эту запись excluded .

В качестве альтернативы я мог бы вручную скопировать src/test/resources/log4j.properties в target/test-classes/log4j.properties.

20
задан IAdapter 27 March 2009 в 21:55
поделиться

1 ответ

Правило жалуется, потому что для получения (расширение) класс возможно полностью заменить функциональность, которую Вы обеспечили, не говоря Вам об этом. Это - верный признак, что Вы не полностью рассмотрели, как тип мог бы быть расширен. Что это хочет, чтобы Вы сделали, вместо этого что-то вроде этого:

public abstract class Plant {
    private String roots;
    private String trunk;

    // setters go here

    private void validate() {
        if (roots == null) throw new IllegalArgumentException("No roots!");
        if (trunk == null) throw new IllegalArgumentException("No trunk!");
        validateEx();
    }

    protected void validateEx() { }

    public abstract void grow();
}

Примечание, что теперь кто-то может все еще предоставить их собственный код доступа, но они не могут заменить Ваш предзаписанный код. В зависимости от того, как Вы означали использовать validate метод, Вы могли также сделать его общедоступным финалом вместо этого.

17
ответ дан 30 November 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: