Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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_Spring_Reflection - Fatal编程技术网

java中的符号表与反射

java中的符号表与反射,java,spring,reflection,Java,Spring,Reflection,java的reflaction似乎需要将符号表编译到类文件中。但出于性能考虑,在运行时我们通常将其删除。(我不知道java,C++中,我们在生产主管中真正地把它搬出来)。 我的问题是,如果删除符号表,这是否意味着某些库(如spring)将无法正常工作 附言: 来自ProfessionalEclipse3forJava™伯索尔德道姆的开发者 您可以在Compliance&Classfiles页面上查看Classfiles和JDK Compliance 可以指定哪些符号信息,例如变量名和 行号将包含

java的reflaction似乎需要将符号表编译到类文件中。但出于性能考虑,在运行时我们通常将其删除。(我不知道java,C++中,我们在生产主管中真正地把它搬出来)。 我的问题是,如果删除符号表,这是否意味着某些库(如spring)将无法正常工作

附言:

来自ProfessionalEclipse3forJava™伯索尔德道姆的开发者

您可以在Compliance&Classfiles页面上查看Classfiles和JDK Compliance 可以指定哪些符号信息,例如变量名和 行号将包含在生成的类文件中。此信息是进行以下操作所必需的: 调试,因此您可能希望保持建议的设置不变。然而,对于一个经过良好测试的程序来说,从类文件中删除这些信息是有意义的;生成的文件是 如果没有符号表,则更小


一般来说,很难知道反射代码可以使用什么而不使用什么。像Spring这样的框架可能会使用运行时可用的调试信息

以Spring的
@PreAuthorize
和相关注释为例。在中,我们看到以下内容:

只要代码中编译了调试信息,就可以通过名称作为表达式变量访问任何方法参数

因此,编译后删除调试信息所采取的任何步骤都必须经过彻底测试,否则必须知道代码中不包含上述模式


但是请注意,这个反射不是由标准Java反射库提供的。有关如何在Java中实现这一点的更多信息,请参阅。

Java中的符号表是什么意思?这在Java中不是一个常用的术语。你能解释一下为什么要这么做吗?如果你能做任何类似的事情并让任何事情都起作用,我会感到震惊,如果它真的产生了任何“性能考虑因素”,我会更加震惊。你想删除哪些“符号”?Java有一些是正常(非反射)链接所必需的(例如方法表),但其他的,如行号映射,是可选的。。。