Domanda

Ho una gerarchia di tipi abbastanza complicata e talvolta correre in errori di tipo hard-to-debug.Mi chiedo se c'è qualche tipo di strumento per informarsi se i requisiti di tipo sono soddisfatti.

ad esempio se ho i seguenti tipi:

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);
   }
}
.

L'interfaccia SphereRoller causerà un errore del compilatore: Bound mismatch: The type Sphere is not a valid substitute for the bounded parameter <T extends CanRoll & Shape> of the type ShapeRoller<T>

Se potrebbe informarsi su proprietà del tipo come la sfera instanceof CanSpin, mi aiuterebbe a capire che ho dimenticato di aggiungere l'attributo CanSpin alla sfera.

Questo è presumibilmente possibile nella visualizzazione delle espressioni di Debugger una volta che l'applicazione è stata costruita ed eseguita correttamente, ma prima di allora gli errori di tipo devono essere già risolti.

C'è qualche strumento o componente aggiuntivo per Eclipse che mi consentirà di rendere le richieste di tipo di compilazione come questa?

È stato utile?

Soluzione

È possibile colpire F4 ("Navigatura - Apri Gerarchia") con il tipo richiesto selezionato per vedere l'intera gerarchia di tipo coinvolta.Non hai bisogno di valutazione del runtime per raggiungere l'obiettivo, se avessi le cose giuste.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top