请查看下面的代码。
class Use
{
public static void main(String[] args)
{
String[] result = new String[2];//{"Hello", "World"}; // compiles and run
Object[] name = result; // compiles and run
// result = name; //CE
System.out.println(result);
System.out.println(name);
}
}
我的理解是Java中的数组是独立的对象,没有父子关系。因此,根据我的说法,“结果”和“名称”是两种完全不同类型的对象(即String []和Object [])的引用变量,它们没有任何关系。然后
result = name
试图将Object数组分配给String数组。您不能将Object分配给声明为String的变量,数组也是如此。您不能将数组分配给声明为其他类型的数组的变量。
Object[] name = result
是合法的,因为所有对象都从Object类继承,包括String。如果要分配的变量继承或实现了要分配给变量的数据类型,则可以为声明的变量分配不同的数据类型。