You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否仅通过类文件原始字节确定类的二进制名称?

问题解答

能仅通过类文件字节数据确定二进制名称吗?

可以。Java类文件的字节数据中明确包含了类的完整二进制名称信息,具体存储在常量池的CONSTANT_Class_info结构里。这个结构的name_index会指向常量池中的CONSTANT_Utf8_info项,存储的是类的全限定名(用/替代.作为包分隔符),把/替换成.就能得到标准的二进制名称。

比如你提供的例子:

  • 编译生成的Foo.class中,常量池里会存储com/foo/bar/Foo,替换后就是com.foo.bar.Foo;
  • 内部类Foo$Bar.class中,常量池里会存储com/foo/bar/Foo$Bar,替换后就是com.foo.bar.Foo$Bar。

网络传输类文件时是否需要额外同步二进制名称?

不需要。接收方只需要解析类文件的字节数据,就能从中提取出完整的二进制名称,完全不需要预先同步或额外传输名称信息。

内容的提问来源于stack exchange,提问作者merlin2011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:52:32