Java Getter方法性能

Java Getter方法性能,java,Java,我正在创建一个游戏,我已经封装了我所有的数据,这显然意味着如果我想从该类的实例中获取一些东西,我必须调用getter方法。我有一个每秒被调用多次的渲染循环。我必须对同一个getter方法使用多个调用,以便从一个对象中获取一个字段并使用它执行多个操作。如果只存储一个对我在类中不断获取的需要它的对象的额外引用会更好吗?在这种情况下,我可以在构造函数中获取它并完成它。这有意义吗?非常感谢 如果只存储一个对我在类中不断获取的需要它的对象的额外引用会更好吗 没有 特别是因为您说您的代码经常被调用,所以JI

我正在创建一个游戏,我已经封装了我所有的数据,这显然意味着如果我想从该类的实例中获取一些东西,我必须调用getter方法。我有一个每秒被调用多次的渲染循环。我必须对同一个getter方法使用多个调用,以便从一个对象中获取一个字段并使用它执行多个操作。如果只存储一个对我在类中不断获取的需要它的对象的额外引用会更好吗?在这种情况下,我可以在构造函数中获取它并完成它。这有意义吗?非常感谢

如果只存储一个对我在类中不断获取的需要它的对象的额外引用会更好吗

没有

特别是因为您说您的代码经常被调用,所以JIT会起作用。它肯定会看到getter调用可以被更简单的加载所取代


不要低估JIT

我同意另一个发布的答案,即没有性能差异

然而,我认为该答案中关于可读性和最佳实践的讨论都误解了OP的问题。他并不是在问自己是否可以避开最佳实践而不使用getter。他在问是否可以/应该创建一个对检索到的对象的本地引用,而不是在每一行调用getter,在我的世界里,这是标准做法,而且确实更具可读性

首先考虑:

doFooThings(service.getFoo());

doBarThings(service.getFoo().getBar());

doBazThings(service.getFoo().getBar().getBaz());
doMoreBazThings(service.getFoo().getBar().getBaz());
doOneLastAmazingBazThing(service.getFoo().getBar().getBaz());
与之相比:

Foo myFoo = service.getFoo();
doFooThings(myFoo);

Bar myBar = myFoo.getBar();
doBarThings(myBar);

Baz myBaz = myBar.getBaz();
doBazThings(myBaz);
doMoreBazThings(myBaz);
doOneLastAmazingBazThing(myBaz);

第二个版本更具可读性,特别是在现实世界中,当代码中有更多的噪声和缩进时,更容易读取引用本地变量的简短行,这些变量以描述性的方式命名,而不是看到同一个getter调用连续出现十几次。

它不一定会更高效,但会更快地键入less@kirbyquerby以降低代码的清晰度为代价,可能。。。而且,IDE是为你准备的use@Stephen我想可能对OP的问题有误解,请看下面我的回答。哦,如果我错了,请纠正我。@111-你是对的。我误解了这个问题。诸如getter/setter之类的简单方法是自动内联的(默认情况下,任何小于35字节的字节代码),并且不会对性能产生任何影响。