У меня довольно сложная иерархия типов, и иногда я сталкиваюсь с трудными для отладки ошибками типов. Мне интересно, есть ли какой-нибудь инструмент, чтобы узнать, выполнены ли требования к типу.
Например, если у меня есть следующие типы:
class ShapeTypeDebugging {
interface Shape {}
interface CanRoll {}
interface ShapeRoller<T extends CanRoll & Shape> {
void Roll(T t);
}
interface Circle extends Shape, CanRoll {}
interface HasThreeDimensions {}
interface ThreeDimensionalShape extends Shape, HasThreeDimensions {}
interface Sphere extends ThreeDimensionalShape {} // Oops, forgot Spheres CanRoll
interface SphereRoller extends ShapeRoller<Sphere> {
@Override void Roll(Sphere sphere);
}
}
Интерфейс SphereRoller
вызовет ошибку компилятора:
Bound mismatch: The type Sphere is not a valid substitute for the bounded parameter <T extends CanRoll & Shape> of the type ShapeRoller<T>
Если бы можно было узнать о свойствах типа, таких как Сфера instanceof CanSpin
, это помогло бы мне понять, что я забыл добавить атрибут CanSpin
в Сферу.
Предположительно, это возможно в представлении выражений отладчика, если приложение правильно и правильно построено, но до этого ошибки типа уже должны быть устранены.
Существует ли какой-либо инструмент или надстройка для Eclipse, которая позволила бы мне делать подобные запросы типа времени компиляции?