【问题标题】:What re the restrictions around Java EXPLICIT type conversion? [duplicate]Java EXPLICIT 类型转换的限制是什么? [复制]
【发布时间】:2021-03-16 08:28:09
【问题描述】:
public class TypeConversion {
    Human human = new Human();
    NonHuman nonHuman = new NonHuman();
    
    public void test()
    {
        nonHuman = (NonHuman) human; //Cannot cast from Human to NonHuman
    }
}

class Human { }
class NonHuman {}

我希望类型转换至少在编译时能够显式地工作。并在运行时导致 ClassCastException 或类似的事情。

所以,我很想知道编译时类型转换的限制是什么。

【问题讨论】:

  • 存储在Human 中的东西永远不能是NonHuman,编译器可以知道。

标签: java casting type-conversion


【解决方案1】:

随机类不能相互转换/转换。

通常允许两种类型的转换 将子类对象转换为超类变量(隐式) 将超类对象转换为子类变量(显式)

因此,只有当这两个类具有父子关系或子父关系时,您的情况才有效。

【讨论】:

  • 您也可以始终转换为接口类型,即使它“看起来”与类无关。
  • 是的,但这与 OP 试图实现的目标不同
  • @JoachimSauer,这真是太棒了。谢谢两位。 +1
  • @samshers 你没有受到抨击,一个反对意见并不多 - 如果你接受这个答案,你应该有一个净收益/损失 0 声誉 afaik。
  • 我没有看到任何抨击
猜你喜欢
  • 1970-01-01
  • 2011-12-28
  • 2019-08-10
  • 2015-12-22
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
相关资源
最近更新 更多