让我们看一下示例代码如下(修改为私有字段):
<Button Style="{StaticResource buttonCommandStyle}" />
... 等等,我们的想法是,JVM或编译器是否优化了多个“not”,位于不同的方法中?
答案 0 :(得分:1)
这不是由javac优化的,但是如果它知道在StupidNot.notEqual
(如果有的话)的加载子类中永远不会覆盖StupidNot
,则可以通过JIT编译器轻松优化。然后notEqual
将被内联到anotherNotEqual
中,并且在内联后将执行此优化。
如果StupidNot
类有子类并且其中一些类重写了notEqual
方法,那么JIT编译器仍然可以根据类型配置文件优化这种情况(如果它已知,例如,在大多数情况下,您使用StupidNot
类而不使用其子类)。在这种情况下,JIT编译器会向anotherNotEqual
方法添加快速类型检查,如果成功,将使用内联notEqual
,否则将使用慢速虚拟调用。
另外请不要忘记anotherNotEqual
也可以通过其他方法进行内联,因为它非常简单。