android– 修改参数的void getter

android– 修改参数的void getter,第1张

概述我发现了一些android代码(link):publicvoidgetSize(PointoutSize){synchronized(this){updateDisplayInfoLocked();mDisplayInfo.getAppMetrics(mTempMetrics,mCompatibilityInfo);outSize.x=mTempMetrics.widthPixels;

我发现了一些android代码(link):@H_404_1@

@H_404_1@

   public voID getSize(Point outSize) {      synchronized (this) {          updatedisplayInfolocked();          mdisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);          outSize.x = mTempMetrics.wIDthPixels;          outSize.y = mTempMetrics.heightPixels;      }   }

只是想知道 – 是什么让这篇文章的作者以这种方式实现它? (为什么它修改参数而不是返回新对象?Get-methods通常是哑的,有返回值,不修改参数.我错了吗?)@H_404_1@

我能从头脑中获得的唯一理由是 – 效率.此方法的用户可以控制创建的Point对象的数量.但设计这样的API是一个好习惯吗?@H_404_1@

UPD:@H_404_1@

我会像这样实现它(或类似的smth):@H_404_1@

@H_404_1@

   public Point getSize() {      Point outSize = new Point();      synchronized (this) {          updatedisplayInfolocked();          mdisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);          outSize.x = mTempMetrics.wIDthPixels;          outSize.y = mTempMetrics.heightPixels;      }      return outSize;   }

解决方法:@H_404_1@

如果批量调用此方法,则删除不必要的对象创建可以显着提高性能.当您开始查看被调用的低级代码和方法时,您就开始进行这些优化.@H_404_1@

像getSize()这样的方法的问题是你真的想要返回一个原语.如果getSize()返回一个int,这将不是问题.在这种情况下,将参数传递给方法以用作“输出参数”是很常见的.@H_404_1@

在J2ME中我们一直都是这样做的.特别是对于返回x / y坐标.在这种情况下,您有2个不会导致对象创建的选项:@H_404_1@

>创建2个方法:int getX()和int getY()OR
>创建一个将X和Y坐标写入传递参数的方法,如下所示:voID getXY(int [] coords)
@H_404_1@

在第二种方法中,调用者分配一次int [2]数组(可能是静态的),然后可以使用相同的数组再次调用getXY()方法来传递坐标.@H_404_1@ 总结

以上是内存溢出为你收集整理的android – 修改参数的void getter全部内容,希望文章能够帮你解决android – 修改参数的void getter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存