zhao1014
V2EX  ›  Java

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

  •  
  •   zhao1014 · Sep 7, 2019 · 3594 views
    This topic created in 2512 days ago, the information mentioned may be changed or developed.
    5 replies    2019-09-07 15:37:32 +08:00
    chendy
        1
    chendy  
       Sep 7, 2019
    因为返回类型就是数组…
    guyeu
        2
    guyeu  
       Sep 7, 2019   ❤️ 1
    java7 以后,重写父类的方法的返回值可以是父类方法的派生类,你可以理解为_Array_重写了 Object 的 clone 的 clone 方法,并且返回了一个和自己类型相同的对象
    zhao1014
        3
    zhao1014  
    OP
       Sep 7, 2019
    @chendy 返回的不是 Object 类型吗?
    zhao1014
        4
    zhao1014  
    OP
       Sep 7, 2019
    @guyeu 首先,如果此对象的类不实现接口 Cloneable,则抛出 CloneNotSupportedException。 请注意,所有数组都被认为是实现接口 Cloneable, ( 并且数组类型 T[]的 clone 方法的返回类型是 T[] ), 其中 T 可以任何引用或原始类型。 另外,该方法将创建该对象的类的新实例,并将其所有字段初始化为被克隆对象的字段,就像通过赋值一样。

    好吧,api 文档里说数组调用 clone ()方法返回的就是 array 类
    GM
        5
    GM  
       Sep 7, 2019
    @zhao1014

    String[] strArray = null;
    strArray.clone() 返回类型是 String[] ,IDE 上可以看提示。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   942 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:18 · PVG 03:18 · LAX 12:18 · JFK 15:18
    ♥ Do have faith in what you're doing.