На самом деле, компилятор выдает ошибку, если приведение вообще невозможно, например, если тип возвращаемых методов create()
будет AnotherBaseClass
вместо SuperClass
.
Так как он возвращает SuperClass
, компилятор не знает, что на самом деле будет возвращено - он также может вернуть SomeBaseClass
. Таким образом, он должен верить, что вы знаете, что вы делаете с этим составом.
Редактировать :
Чтобы получить предупреждение при приведении, вы можете попробовать использовать инструмент анализа кода, такой как Checkstyle .
Однако обратите внимание, что эти инструменты, скорее всего, не могут или не проверяют иерархию классов и, следовательно, могут только предупреждать о (не примитивных) приведениях, используемых в целом. Таким образом, если вы используете библиотеку, которая требует приведения (например, если вы используете коллекции Apache Commons, которые еще не поддерживают универсальные шаблоны), вы получите много предупреждений.
В конце концов, программирование все еще является искусством , и вам все еще нужно знать, что вы делаете.