ArrayList<StringBuilder> al = new ArrayList<>(
Arrays.asList(new StringBuilder[]{
new StringBuilder("Oracle"),
new StringBuilder("Java"),
new StringBuilder("Sun"),
new StringBuilder("DataBase")}));
StringBuilder[] al2array = (StringBuilder[]) al.toArray();
如果al.toArray()
返回 Object[]
我知道它实际上是 StringBuilder[]
那么为什么我不能施放它呢?
最佳答案
Java 无法知道(在编译时)Object[]
中存储了哪些对象。理论上,它可以包含 Integer
、String
和 GrumpyCat
,这将使强制转换为 StirngBuilder[]
错误 - 所以 java 根本不允许这样做。
但是,您可以使用重写的 toArray(StringBuilder[])
来安全地执行此操作:
StringBuilder[] al2array = al.toArray(new StringBuilder[al.size]);
关于java - 为什么我不能在 Java 中将 Object[] 转换为 StringBuilder[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246681/