java 这个问题 ???

Object[ ] arr = (Object[ ]) object ;

还可以这样写 ? 怎么可以把一个东西 变成数组 ? 一变多 ?


回答:

在JAVA里,数组本身也是一个对象,任何类的最终父类都是java.lang.Object类,所以假设这个object就是一个数组或者任意有迭代器的集合类型,这个转化是成立的,否则会报ClassCastException,需要这样写:

Object[] arr = new Object[]{object};


回答:

能强转成功,会因为这两种类型是父子关系,并且是子转父(向上转型)
举个例子:Integer 类型继承于 Number 类型,那么Integer 就可以转成 Number

Integer[] arr1 = {1, 2, 3};

System.out.println((Number[]) arr1);

回到你的代码 Object[] arr = (Object[]) object; 如果 object 对象的类型是 Object[] 的子类,那就能强转成功,比如。。。

Integer[] object = {1,2,3};

Object[] arr = (Object[]) object;

或者

String[] object = {"AAA", "BBB"};

Object[] arr = (Object[]) object;

当然,Object 是所有类型的父类,那么我还可以这样写

String[] object = {"AAA", "BBB"};

Object arr = (Object) object;


回答:

会报错,不能直接将一个对象转换为该对象的数组类型。因为数组类型在创建时就确定了元素的类型,并且在运行时是不可变。可以这样"一变多":

        Stream<MyObject> objectStream = Stream.of(

new MyObject("Object 1"),

new MyObject("Object 2"),

new MyObject("Object 3")

);

// 将对象转换为数组

MyObject[] arr = objectStream.toArray(MyObject[]::new);


回答:

这样写能成功的原因是object对象的实际类型就是"object[]",否则程序会抛出ClassCastException。

以上是 java 这个问题 ??? 的全部内容, 来源链接: utcz.com/p/945385.html

回到顶部