在 Java 中,数组是一个对象。我的问题是...创建新数组时是否调用对象构造函数?我们想利用这个事实来使用一些额外的字节码来检测对象构造函数,以检查正在构造的数组的长度。那行得通吗?

有帮助吗?

解决方案

就 Java 语言规范而言,虽然两者都使用 new 关键词, 类实例创建表达式数组创建表达式 有不同的表达形式,每种都有自己的规则。数组创建表达式的描述没有提到调用构造函数。

其他提示

JVM规范 :“阵列的创建和使用一组不同的指令进行操作。”因此,尽管阵列是对象的实例,它们不被初始化相同的方式,其它的目的是:(它可以看到如果从链接锚向上滚动)。

我不这么认为,因为你不能获得本地阵列overridethe构造

可以使用字节码操作以放置在以往任何时候创建一个新的数组的检查。

不。我发现这个AspectJ的邮件列表: HTTP://dev.eclipse .ORG / mhonarc /列表/ AspectJ的用户/ msg02975.html

您可能问的一个原因数组,但是如果可以的话,为什么不切换到集合类。这会给你很多机会来拦截并做验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top