微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反射是否要求将文字字符串写在字节码之间?

如何解决反射是否要求将文字字符串写在字节码之间?

| 当Java(或任何能够反映语言的语言)输出程序时,它是否将方法名称保留为字节码内的字符串? 我想知道在没有这种情况的情况下如何进行以下操作:
Class c = Class.forName(\"foo\");
Method m[] = c.getDeclaredMethods();
字节码会包含类中每个方法字段和名称的字符串吗?我想知道,因为我想确保在不混淆所有内容的情况下,不容易阅读代码的所有部分。如果我对反思的理解存在根本性的错误,请告诉我。     

解决方法

        首先,方法,字段和类名称以明文形式存储在.class文件中。 其次,除了反思之外,还有一些Java反编译器可以从字节码中恢复几乎可读的代码。 第三,如果要保护代码,请使用混淆处理。有几种流行的Java混淆器。     ,        是的,每个字段都将包含全名。如果要混淆代码,则需要使用混淆程序(尽管这也不完全安全,但可以在运行时轻松读取它们)。     ,        如前面的答案所提到的,当Java被翻译/编译为Java字节码(一个“ Java程序”)时,ids。被存管。 由于您提到“其他语言”: 如果它们针对相同的Java虚拟机,则这些语言还将生成带有名称的Java字节码。 我不确定,但是,我相信\“。NET \\”语言不会直接在其程序中生成id \,并且有Java和J.V.M新版本的建议或原型。 (Java 7,Java 8),以使用数字或代码代替纯名称,以确保安全性并使程序更快和更优化。 有一本(数字/印刷)书:“ Java虚拟机规范”,其中字节码提到了类ID。如果您有兴趣,我认为您仍然可以从Sun-Oracle免费下载,或在Amazon购买。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。