从对象到对象的转换[]

时间:2018-08-01 03:25:34

标签: java arrays object casting

我要遍历代码的一部分,其中当我无法理解时,必须将不同的数据类型明确地用大小写类型转换为object类型,反之亦然如何完成这样的事情:

(Object[])obj; //Casting an Object variable into and Object[]

我尝试对所有其他内置和基元执行相同的操作。这是行不通的。

(String[])str; //Gives the error cannot cast from string to string[]

(int[])i; //Gives the error cannot cast from int to int[]

(char[])ch; //Gives the error cannot cast from char to char[]

(long[])l; //Gives the error cannot cast from long to long[]

(Integer[])in; //Gives the error cannot cast from int to Integer[]

  

其中str是string类型的a,i和in是int类型的,ch是   类型char,l是类型long

然后如何允许它,以及当我们这样做时内部如何实现 (Object[])obj;

这里obj的类型为Object

1 个答案:

答案 0 :(得分:4)

引用类型的

任何实例也是一个对象。

例如数组。

一个字符串数组...是一个对象。

一个对象数组...是一个对象。

因此,当实际对象是这样的数组时,可以回退。

但是:字符串数组绝不是字符串。因此,该转换不起作用!

在代码中:

String[] strings = { "a", "b", "c" };
Object obj = strings;

第二行有效是因为可以将“对象”中的任何内容赋给对象变量。并且由于obj实际上是 引用字符串数组,因此您可以回退:

String[] anotherVariablePointingToTheSameArray = (String[]) obj;

请紧记:该强制转换只有一个含义:比编译器更了解。您知道“某事”实际上(在运行时)更具体。

换句话说:如果(X) y返回true,则只能进行y instanceOf(X)强制转换!