V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhao1014
V2EX  ›  Java

用 clone()方法复制数组为什么不需要强制类型转换?

  •  
  •   zhao1014 · 2019-09-07 10:20:29 +08:00 · 3007 次点击
    这是一个创建于 1922 天前的主题,其中的信息可能已经有所发展或是发生改变。
    5 条回复    2019-09-07 15:37:32 +08:00
    chendy
        1
    chendy  
       2019-09-07 11:24:05 +08:00
    因为返回类型就是数组…
    guyeu
        2
    guyeu  
       2019-09-07 11:56:49 +08:00   ❤️ 1
    java7 以后,重写父类的方法的返回值可以是父类方法的派生类,你可以理解为_Array_重写了 Object 的 clone 的 clone 方法,并且返回了一个和自己类型相同的对象
    zhao1014
        3
    zhao1014  
    OP
       2019-09-07 15:06:16 +08:00
    @chendy 返回的不是 Object 类型吗?
    zhao1014
        4
    zhao1014  
    OP
       2019-09-07 15:32:51 +08:00
    @guyeu 首先,如果此对象的类不实现接口 Cloneable,则抛出 CloneNotSupportedException。 请注意,所有数组都被认为是实现接口 Cloneable, ( 并且数组类型 T[]的 clone 方法的返回类型是 T[] ), 其中 T 可以任何引用或原始类型。 另外,该方法将创建该对象的类的新实例,并将其所有字段初始化为被克隆对象的字段,就像通过赋值一样。

    好吧,api 文档里说数组调用 clone ()方法返回的就是 array 类
    GM
        5
    GM  
       2019-09-07 15:37:32 +08:00
    @zhao1014

    String[] strArray = null;
    strArray.clone() 返回类型是 String[] ,IDE 上可以看提示。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1099 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:30 · PVG 07:30 · LAX 15:30 · JFK 18:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.