gpt4 book ai didi

Java:将 MyClass 转换为列表

转载 作者:行者123 更新时间:2023-12-01 22:22:56 25 4
gpt4 key购买 nike

为什么可以施放MyClass反对 List<MyClass>没有编译错误(只是有“未检查”警告),尽管 MyClass未实现 List 接口(interface),同时无法进行强制转换,例如 String类同样的方式。

谢谢。

最佳答案

如果转换完全不可能,编译器将产生编译器错误。但是,当您转换为接口(interface)(并且您的原始类不是 final)时,此转换有可能成功。

对于您尚未编写的类,即使它可能不存在,也可以子类化 MyClass 并实现 List,即使这没有任何意义给我们。

由于存在这种可能性,编译器必须允许这种强制转换。但如果没有这样的子类,这仍然会在运行时导致 ClassCastException

JLS, Section 5.5.1 ,将 S 转换为 T 时的状态:

  • If T is an interface type:

    • If S is not a final class (§8.1.1), then, if there exists a supertype X of T, and a supertype Y of S, such that both X and Y are provably distinct parameterized types, and that the erasures of X and Y are the same, a compile-time error occurs.

      Otherwise, the cast is always legal at compile time (because even if S does not implement T, a subclass of S might).

    • If S is a final class (§8.1.1), then S must implement T, or a compile-time error occurs.

(粗体强调我的)

关于Java:将 MyClass 转换为列表 <MyClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com