gpt4 book ai didi

java - JVM 如何实现可变参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:56 25 4
gpt4 key购买 nike

我最近对 ​​Java 中的这种特性产生了兴趣,它是参数数量可变的函数。这是一个非常酷的功能。但我感兴趣:

void method(int x, String.. args) {
// Do something
}

这实际上是如何在运行时级别上实现的?我想到的是,当我们打电话时:

method(4, "Hello", "World!");

最后两个参数在内部转换为数组,传递给方法。我对此是否正确,或者 JVM 实际上将堆栈引用插入了字符串,而不仅仅是对数组的一个引用?

最佳答案

它是在编译时级别实现的。您的方法被编译为字节码为

varargs method(I[Ljava/lang/String;)V
...

相当于

void method(int x, String[] args) {
...

带有 varargs 标志。

method(4, "Hello", "World!");

编译为

method(4, new String[] {"Hello", "World!"});

关于java - JVM 如何实现可变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746663/

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