Eerst en vooral: excuses voor de topic-titel.
Dit is mijn probleem: ik heb een interface Data, met een aantal klasses die dit implementeren. Nu krijg ik in een stuk code een array van Data-objecten aangeleverd. Ik wil elk van die Data-objecten naar een string converteren.
Nu heb ik een aantal statische methodes gemaakt in Parser:
* parseData(Text text)
* parseData(Image image)
enzovoort, voor elke klasse die Data implementeert heb ik zo'n methode.
Nu doe ik in een methode parseALotOfData(ArrayList<Data> list) het volgende:
Parser.parseData( listItem.getClass().cast(listItem) );
Omdat er voor elke klasse die Data implementeren, een methode parseData bestaat; zou dit runtime nooit verkeerd mogen lopen. Toch geeft javac de volgende error:
Wie geeft met de oplossing? Ik kan eventueel de volgende code gebruiken, maar dat is niet zo proper:
Parser.class.getMethod("parseData", listItem.getClass() ).invoke(listItem);
Dit is mijn probleem: ik heb een interface Data, met een aantal klasses die dit implementeren. Nu krijg ik in een stuk code een array van Data-objecten aangeleverd. Ik wil elk van die Data-objecten naar een string converteren.
Nu heb ik een aantal statische methodes gemaakt in Parser:
* parseData(Text text)
* parseData(Image image)
enzovoort, voor elke klasse die Data implementeert heb ik zo'n methode.
Nu doe ik in een methode parseALotOfData(ArrayList<Data> list) het volgende:
Parser.parseData( listItem.getClass().cast(listItem) );
Omdat er voor elke klasse die Data implementeren, een methode parseData bestaat; zou dit runtime nooit verkeerd mogen lopen. Toch geeft javac de volgende error:
code:
1
2
| The method parseData(Image) in the type Parser is not applicable for the arguments (capture-of ? extends Data) |
Wie geeft met de oplossing? Ik kan eventueel de volgende code gebruiken, maar dat is niet zo proper:
Parser.class.getMethod("parseData", listItem.getClass() ).invoke(listItem);
WebDAV in Vista is horribly broken. Ik wil het fixen, maar ben nog steeds op zoek naar de tarball met de source...