gpt4 book ai didi

java - 欺骗 JVM 转换数组

转载 作者:行者123 更新时间:2023-11-29 03:07:44 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以将 SuperType 数组转换为 SubType 数组。像这样:

SubType[] subArray = (SubType[])someSuperTypeArray;

我知道在运行时这会抛出一个 ClassCastException。转换数组的一种方法是将其复制到另一个数组中。就我而言,复制它不是一种选择。

我能否欺骗 JVM,使其相信转换是有效的,并绕过类类型检查?创建对 SuperType 数组的引用,通过它它被视为某个 SubType 数组。 (可能面临无法解释的错误的危险)

最佳答案

如果你像这样定义数组

SuperType[] array = {element1, element2};
SubType[] array2 = (SubType[]) array;

它不会起作用,但是你可以这样做:

SuperType[] array = new SubType[]{element1, element2};
SubType[] array2 = (SubType[]) array;

您只需确保在转换时字段 array 始终必须是您的 SubType 的数组。

关于java - 欺骗 JVM 转换数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com