我想知道昨天有一件事突然袭入我的脑海.
我提前为这个误导性的标题道歉,但我真的不知道如何获得这个权利.
好吧,假设我们是两个对象ObjA和ObjB,例如,ObjB有一个方法,它将ObjA对象作为参数.
我提前为这个误导性的标题道歉,但我真的不知道如何获得这个权利.
好吧,假设我们是两个对象ObjA和ObjB,例如,ObjB有一个方法,它将ObjA对象作为参数.
我们可以这样做(以java为语言):
ObjA instanceA = new ObjA(); ObjB instanceB = new ObjB(); instanceB.method(instanceA);
要么
new ObjB().method(new ObjA());
假设这是某个函数的主体,因此当超出范围时,对象将被销毁.
我的问题是:
通过不实例化单个对象并隐式调用第二个代码,我们是否获得了性能优势?这种可读性牺牲是否值得?或者它是否一无所有,因为隐式创建的对象将存储在内存中并且仍然按范围死亡?
注意:我不知道我是说“隐含”还是“匿名”,但我在谷歌上找不到多少.
解决方法
绝对没有性能明显的区别.
但在少数情况下,您将被迫使用第一种类型.
例如:
ObjA instanceA = new ObjA(); // Do something with instanceA instanceB.method(instanceA);
如果你在中间没什么可做的,我可以用第二种方法来保存一行代码.