我正在帮助一位一年级的 friend 准备他的 Java 考试。 老师要求他们创造一种可以将音乐家塑造成诗人的方法。
没有人知道该怎么做。想了想,我得出的结论是不可能做到这一点(ClassCastException),因为 Musician 和 Poet 共享一个接口(interface)这一事实不足以将它们强制转换为另一个。
我认为这只有在它们处于同一继承链中时才有可能。
现在我有三个问题:
- 我说得对吗?
- 如果我是对的,教授希望他们做什么?我真的怀疑他会提出这样的要求。
- 如果我错了,你能写出可以将音乐家变成诗人的代码吗?
最佳答案
- 你是对的
- 技巧问题?
- 不,至少,不是没有
ClassCastException
。
你可以试试:
Musician musician = new Musician();
Artist artist = musician;
Poet poet = (Poet)artist;
但当然,该代码实际上不会在运行时运行。
关于java - 关于object Casting的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051663/