I'm get a ClassCastException
ogni volta che provo a trasmettere un BufferedImage (parent) ad un AdvancedBufferedImage (child) che ho esteso me stesso, ho non sovrascritto nessun metodo e ho implementato tutti gli appaltatori senza modificarlicasting genitore a figlio - BufferedImage oggetto
Sto gettando questa eccezione ogni volta che provo a creare un AdvancedBufferedImage di File usando il metodo ImageIO.read().
File file = new file(path);
AdvancedBufferedImage image = (AdvancedBufferedImage) ImageIO.read(file);
Sembra che non ci dovrebbero essere problemi, quale potrebbe essere il problema?
Quindi suggerisci di modificare la relazione di AdvancedBufferedImage con BufferedImage, in modo che HAS A non sia IS A? –
Esattamente. Questo approccio ti consente di delegare i metodi che non vuoi implementare tu stesso e di aggiungere ancora funzionalità aggiuntive. Dovrai solo avvolgere la classe esistente. –
solo un avviso c'è uno strumento utile per fare proprio questo in eclissi, creare una classe che ha l'istanza della classe che si desidera delegare, fare clic destro sul membro, 'delegare metodi'. molto utile per grandi classi –