将父级转换为子级 - BufferedImage对象

Kir*_*kov 9 java bufferedimage casting

ClassCastException每当我尝试将BufferedImage(父)强制转换为我自己扩展的AdvancedBufferedImage(child)时,我都会得到一个,我没有覆盖任何方法而且我已经实现了所有承包商而没有修改它们

每当我尝试使用ImageIO.read()方法从File创建AdvancedBufferedImage时,我就会得到这个异常.

File file = new file(path);
AdvancedBufferedImage image = (AdvancedBufferedImage) ImageIO.read(file);
Run Code Online (Sandbox Code Playgroud)

似乎应该没有任何问题,可能是什么问题?

W. *_*man 15

像这样的向下倾斜是不允许的.

首选的解决方案是创建一个AdvancedBufferedImage的构造函数,将BufferedImage作为参数.有了这个,你可以做到以下几点.

File file = new file(path);
AdvancedBufferedImage image = new AdvancedBufferedImage(ImageIO.read(file));
Run Code Online (Sandbox Code Playgroud)

这里AdvancedBufferedImage的构造函数可以决定如何正确转换高级BufferedImage中的BufferedImage.

  • 只是注意有一个方便的工具,在eclipse中做这个,创建一个具有你想要委托的类的实例的类,右键单击成员,`委托方法`.非常方便的大班 (6认同)