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