проверить, переопределено ли поле - PullRequest
0 голосов
/ 01 февраля 2012

Есть ли в checkstyle правило, которое проверяет, переопределяет ли подкласс открытое или защищенное поле родительского класса.

Например

class Ancestor {
   public static final int VALUE = 123;
}

class Descendant extends Ancestor {
   public static final int VALUE = 100; // <-- this is unwanted
}

Я хочу как-нибудь с помощью checkstyle запретить такую ​​ситуацию.

1 Ответ

2 голосов
/ 01 февраля 2012

Семантика переопределения неприменима для статических полей . При доступе к VALUE в Descendant в качестве значения используется 100. Вы также можете ссылаться на VALUE суперкласса, используя Ancestor.VALUE.

Теперь лучший способ избежать путаницы - это всегда обращаться к статическим членам, указав в качестве имени класса, например, Ancestor.VALUE и Descendant.VALUE. Среды IDE (например, eclipse) позволяли вам применять это правило, но не видели его ни в одном из инструментов статического анализа кода. Ниже приведен скриншот о том, как применить это в eclipse

enter image description here

...