Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中创建数组时是否调用对象构造函数?_Java_Arrays_Object_Instrumentation_Construction - Fatal编程技术网

在Java中创建数组时是否调用对象构造函数?

在Java中创建数组时是否调用对象构造函数?,java,arrays,object,instrumentation,construction,Java,Arrays,Object,Instrumentation,Construction,在Java中,数组是一个对象。我的问题是。。。创建新数组时是否调用对象构造函数?我们希望使用这个事实来使用一些额外的字节码来检测对象构造函数,这些字节码检查正在构造的数组的长度。这行得通吗?我不这么认为,因为您不能派生一个本机数组来重写构造函数,因为“数组是使用一组不同的指令创建和操作的。”因此,虽然数组是对象的实例,但它们的初始化方式与其他对象不同(如果从链接锚向上滚动,您可以看到)。您可以使用字节码操作将检查放在创建新数组的位置。没有。我在AspectJ邮件列表中找到了此项: 您询问数组可能

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

我不这么认为,因为您不能派生一个本机数组来重写构造函数,因为“数组是使用一组不同的指令创建和操作的。”因此,虽然数组是对象的实例,但它们的初始化方式与其他对象不同(如果从链接锚向上滚动,您可以看到)。

您可以使用字节码操作将检查放在创建新数组的位置。

没有。我在AspectJ邮件列表中找到了此项:


您询问数组可能是有原因的,但如果可以,为什么不切换到collection类。这将为您提供大量截取和验证的机会。

就Java语言规范而言,尽管两者都使用
new
关键字,并且是不同的表达形式,每个都有自己的rul是的。数组创建表达式的描述中没有提到调用构造函数。

我不确定我是否理解。请详细说明一下好吗?(我不想重写构造函数…我想在那里放额外的字节码。每次创建对象时都会调用Object()构造函数。由于数组也是一个对象,我希望Object()是在本例中也被调用)您的意思是检测每个类中的每个方法?(我们希望避免这种情况。)看起来在newarray之后没有调用构造函数:-(谢谢。您好……您的第一行中似乎缺少一些内容。