我有一个相当复杂的类型层次结构,有时遇到难以调试的类型错误。我想知道是否有某种工具可以询问是否满足类型要求。
例如,如果我有以下类型:
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>
如果可以查询类似Sphere instanceof CanSpin
的类型属性,它会帮助我意识到我忘记将CanSpin
属性添加到Sphere。
一旦构建并正确执行应用程序,这可能在调试器的表达式视图中有可能,但在此之前必须已经解决了类型错误。
是否有任何Eclipse工具或附件允许我进行这样的编译时类型查询?
答案 0 :(得分:1)
您可以点击F4
(“导航 - 打开类型层次结构”),并选择所需的类型以查看所涉及的整个类型层次结构。如果我做对了,你不需要运行时评估来实现目标。