有两个班
foo.bar.FileUploader 和 barbar.foofoo.FileUploader
两者都相同并且延伸 Uploader
在代码中的某处foo.bar.FileUploader使用,并作为一个Uploader类型作为参数提供给我的函数.
现在我需要将它转换回FileUploader不过barbar.foofoo.FileUploader.这给出了一个错误:
错误 - 未处理的错误
java.lang.ClassCastException:foo.bar.FileUploader无法转换为barbar.foofoo.FileUploader
我无法弄清楚出了什么问题,我想这是因为包装不同.在这种情况下:有没有办法仍然使用该类并完成演员表?
从技术上讲,他们不是同一个班级.
您将获得ClassCastException,因为JVM根本看不到它们是相同的类型.也许你应该让两个类实现相同的接口并转换为它?或者,首先只有一个班级并摆脱演员阵容?
对于Java,类不相同.考虑一下
package zoo;
public interface Animal {}
package zoo.london;
public class Lion implements Animal{}
package zoo.newyork;
public class Lion implements Animal{}
Run Code Online (Sandbox Code Playgroud)
即使两个Lion类的实现都是相同的并且它们都实现了一个公共接口,你也不能反之亦然
zoo.london.Lion lion = (zoo.london.Lion) new zoo.newyork.Lion(); // ClassCastException
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4970 次 |
| 最近记录: |