Ich bin mit einem Downcasting-Problem mit Java fest.Problem mit Downcasting Bild
Hier ist das Diagramm: Die Klasse MyPicture
erweitert die abstrakte Klasse BufferedImage
. Der Punkt ist, ein paar Methoden zu BufferedImage
hinzuzufügen. Dann habe ich die Klasse MyWindow
, die ein benutzerfreundliches Fenster setzt. In dieser Klasse möchte ich ein Bild in MyPic
laden, es in MyPic_filtered
kopieren, eine Methode verwenden, die in MyPicture
auf MyPic_filtered
verwendet wird und schließlich MyPic
und MyPic_filtered
in getrennten Fenstern anzeigen (aber dieser letzte Teil ist OK ^^). Ich weiß nicht, welche Typen ich für MyPic
und MyPic_filtered
verwenden sollte. Ich habe versucht, sie in der richtigen Art zu werfen, es baut, aber nicht läuft. Hier
ist der Code:
//Loading the picture
BufferedImage MyPic = ImageIO.read(new File(URL)); //URL is a string
//Copy the picture
MyPicture myPic_filtered = myPic;
//Use the method from MyPicture
myPic_filtered.method_from_MyPicture();`
Könnte mir bitte jemand helfen?
'ImageIO.read()' gibt kein 'MyPicture' zurück. Sie können ein Objekt nicht magisch in einen Typ verwandeln, der es nicht ist. – SLaks
Auch Java unterscheidet zwischen Groß- und Kleinschreibung, also 'MyPic! = MyPic' – QBrute
* Die Klasse' MyPicture' erweitert die abstrakte Klasse 'BufferedImage' * ... Diese Aussage ist falsch. 'BufferedImage' ist nicht abstrakt. Es gibt im Allgemeinen keine Notwendigkeit, es zu erweitern, und ich würde dagegen raten. Verwenden Sie Delegierung statt Vererbung. – haraldK