Java方法声明中参数的最大数量

2023-12-07

Java 中的方法可以拥有的最大参数数量是多少?为什么?

我在 64 位 Windows 系统上使用 Java 1.8。

StackOverflow 上所有关于此问题的答案都说技术限制是 255 个参数,但没有具体说明原因。

准确地说,静态为 255,非静态为 254(this在这种情况下将是第 255 个)方法。

我认为这可以用某种规范来描述,并且只是静态定义允许的最大参数数量。

但这仅适用于int以及所有 4 字节类型。 我做了一些测试long参数,在这种情况下我只能声明 127 个参数。

With String参数,我测试得出的允许数量是255(可能是因为Java中引用大小是4字节?)。

但由于我使用的是 64 位系统,引用大小应该是 8 字节宽,所以String参数最大允许数量应为 127,类似于long types.

这个限制具体是如何应用的?

和限制有关系吗堆栈大小的方法?

注意:我实际上并不打算在任何方法中使用这么多参数,但这个问题只是为了澄清确切的行为。


该限制定义在JVM规范:

方法参数的数量仅限 255 个根据方法描述符(§4.3.3)的定义,其中限制包括一个单位this在实例或接口方法调用的情况下。

Section §4.3.3提供了一些附加信息:

仅当方法描述符表示总长度为 255 或更短的方法参数时才有效,其中该长度包括对this在实例或接口方法调用的情况下。

总长度是通过将各个参数的贡献相加来计算的,其中 long 或 double 类型的参数贡献两个单位的长度,任何其他类型的参数贡献一个单位的长度.

你的观察是正确的,双字原语(long/double) 需要两倍于通常 4 字节变量的大小和 4 字节对象实例引用.

关于与 64 位系统相关的问题的最后一部分,规范定义了多少单位参数贡献,规范的该部分仍须遵守即使在 64 位平台上,64 位 JVM 也将容纳 255 个实例参数(就像您的 255 个实例参数一样)Strings) 无论内部对象的指针大小如何。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java方法声明中参数的最大数量 的相关文章

  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类

随机推荐

  • SQL 合并时出现 ORA-38104 错误的原因是什么?

    我有这样的代码 MERGE INTO target table tgt USING source table src on tgt c1 src c1 WHEN MATCHED THEN UPDATE SET tgt c1 src c2 I
  • 根据跨越边界的数量,用颜色突出显示超过或低于阈值的 matplotlib 点

    我有一个如下所示的图表 我为获取该图 8 个图的序列之一 而运行的代码如下 date list list df testing set date unique random date list list np random choice d
  • JSON4s 找不到带 Spark 的构造函数

    我在尝试在 Spark 作业中解析 json 时遇到了问题 我使用的是 Spark 1 1 0 json4s 和 Cassandra Spark 连接器以及 DSE 4 6 抛出的异常是 org json4s package Mapping
  • 适当的CSS以确保body元素填满整个屏幕

    我的身体元素有问题 似乎 100 占满了屏幕 但是 如果您将浏览器拖动得较小 然后向下滚动 则主体不会扩展 请参见这个jsFiddle作为一个很好的例子 height 100 是您网站显示的窗口的高度 而不是网站的高度 这会导致向下滚动时背
  • TPL数据流处理N条最新消息

    我正在尝试创建某种队列来处理收到的 N 个最新消息 现在我有这个 private static void SetupMessaging messagingBroadcastBlock new BroadcastBlock
  • 页面加载超时 - 使用 C# 的 Selenium Webdriver

    我正在使用 Selenium 2 25 WebDriver 我在查找页面上的元素时遇到问题 有时我的测试用例能够找到元素 有时页面未加载 这是由于页面加载所致 如果我在下面添加此行 它似乎可以工作 driver Manage Timeout
  • 无法加载库 plpython3.dll

    我在 Postgresql 版本 10 中创建扩展时遇到错误 无法加载库 C Program Files PostgreSQL 10 lib plpython3 dll 找不到指定的模块 CREATE EXTENSION plpython3
  • 我如何/我可以通过 JavaScript 访问 sessionid cookie?

    我已经安装了 jquery 的 cookie 扩展 并且正在尝试访问会话 id cookie 我的会话当前有两个 cookie 请参阅下面的屏幕截图 然而 cookie 只列出了一个 gt cookie Object csrftoken f
  • Rcpp:处理 NumericMatrix 时,* 的语法糖会产生意想不到的结果

    最近被问到的一个问题让我相信语法糖 by Rcpp不按预期工作 在链接的问题中 用户试图将矩阵乘以标量 R code 这就是我们想要实现的目标Rcpp 但现在简单地说R gt m lt matrix 0 3 2 2 gt m 3 1 2 1
  • 旋转轴刻度标签

    我不知道如何在 X 轴上旋转文本 它是一个时间戳 因此随着样本数量的增加 它们会越来越近 直到重叠 我想将文本旋转 90 度 这样当样本靠得更近时 它们就不会重叠 下面是我所拥有的 它工作正常 但我不知道如何旋转 X 轴文本 import
  • 计算每年两个日期之间的天数

    我有一个数据框 每行都有开始日期和结束日期 我想计算两个日期之间的天数并按年份分割 所以从这里开始 id lt c 1 2 3 start lt as Date c 01 01 2015 01 01 2016 07 01 2015 form
  • JWT 的安全性如何

    我知道这个问题不是什么新鲜事 可能已经在互联网上讨论过 我是新手 但经过一些研究 我同意它是安全的 因为匿名可以嗅探令牌但无法在其上附加任何内容 我计划将 JWT 存储在 HTML5Storage 中 并解码有效负载以获取一些不敏感信息 D
  • WCF IErrorHandler 扩展未返回指定的故障

    希望有一些 WCF 向导能够发现我的错误 我正在尝试通过 RESTful JSON WCF 服务上基于 IErrorHandler 的行为扩展来设置全局错误处理程序 该方法被修饰如下 OperationContract WebGet Uri
  • 用户脚本隐藏跨域 iframe 的子节点

    我想通过 Tampermonkey 用户脚本隐藏其中包含一些单词的注释 作为一个例子 我尝试应用一个脚本 UserScript name Hide CNN match http www cnn com require http ajax g
  • 我可以将 varbinary 的最大大小设置为 2 MB 吗?

    据我所知 您可以 手动 定义的最大值是8000 gt varbinary 8000 据我所知 这意味着8000 bytes gt 7 8125 KByte 是否可以将 max 设置为2 MB 类似的东西varbinary 2097152 或
  • 通过其内部字段获取枚举

    有带有内部字段的枚举 类似地图 现在我需要通过其内部字段获取枚举 写了这个 package test Test enum to test enum public enum TestEnum ONE 1 TWO 2 THREE 3 priva
  • node.js 相当于 python 的 if __name__ == '__main__' [重复]

    这个问题在这里已经有答案了 我想检查我的模块是否被包含或直接运行 我怎样才能在node js中做到这一点 Node js 文档描述另一种方法来做到这一点 这可能是首选方法 当文件直接从 Node 运行时 require main 将设置为其
  • 配置:错误:C编译器无法创建可执行文件-Buildozer kivy到android调试

    输入我的问题 他们可以跳过它 您好 我正在尝试编译 apk 应用程序 但由于缺少我的系统未带来的库和应用程序以及 buildozer 和 kivy 要求中未提及的库和应用程序 我总是遇到很多问题 在安装了很多库来解决以前的问题后 我陷入了这
  • 如何使用 WordPress 链接多个 CSS 文件

    我知道要链接您的 WordPress 主目录style css您使用的文件 然而 我有相当多的 CSS 文件需要链接到主 PHP 文件 例如滑块 图片框等 我不太确定我会怎么做 因为仅适用于名为的样式表styles css我的其他样式表都有
  • Java方法声明中参数的最大数量

    Java 中的方法可以拥有的最大参数数量是多少 为什么 我在 64 位 Windows 系统上使用 Java 1 8 StackOverflow 上所有关于此问题的答案都说技术限制是 255 个参数 但没有具体说明原因 准确地说 静态为 2