为什么克隆数组没有类型转换?

Suz*_*ioc 4 java arrays clone

发现我可以做以下事情:

package test.java.lang;
import java.util.Arrays;

    public class Tester_ArrayCloning_01 {

        public static void main(String[] args) {
            double[] vals1 = {1.2, 2.3, 3.4, 4.5};
            double[] vals2;

            // vals2 = (double[])vals1.clone(); // was thinking should do so
            vals2 = vals1.clone(); // but happened can do so

            System.out.println(Arrays.toString(vals2));
        }

    }
Run Code Online (Sandbox Code Playgroud)

为什么?什么时候介绍?

Jon*_*eet 9

JLS的第10.7节开始,数组成员:

数组类型的成员是以下所有成员:

...

  • public方法clone,它覆盖Object类中的同名方法,并且不会抛出任何已检查的异常.数组类型T []的克隆方法的返回类型是T [].

第三版中相同部分具有相同的内容.

第二版中说,数组类型覆盖clone(),但在这一点上并没有返回类型的协方差,所以他们不能这样做回来T[].

所以基本上它是在1.5中引入的.