我正在编写一个Android应用程序,我有一个类可以生成并维护一些偶尔可以更改的固定URL。我将它们全部保存在一个名为UrlUtils的类中:
public class UrlUtils {
private static String sUrlBase = "http://google.com";
/**
* Called occasionally
*/
public static void refreshUrlBases() {
sUrlBase = "http://yahoo.com/" + new Random().nextInt();
}
public static String getUrlBase() {
return sUrlBase;
}
}
我必须在上面对getUrlBase()
进行大量调用,因此我正在考虑将sUrlBase
公开并直接访问它。这种方法在性能方面会更好吗?
答案 0 :(得分:5)
是的,出于性能原因,您应该避免使用getter和setter。这是来自android“Designing for performance”doc。
的提示没有JIT,直接字段访问速度比调用a快3倍 琐碎的吸气剂。使用JIT(直接现场访问便宜) 访问本地),直接字段访问速度比快7倍 调用一个微不足道的吸气剂。在Froyo中也是如此,但是会有所改善 JIT内联getter方法的未来。
答案 1 :(得分:2)
如果您不打算更频繁地更改网址,那么我会说getter/setter
方法,而不是static
方法,而是直接public static String google_url = "http://google.com";
public static String yahoo_url = "http://yahoo.com";
static
在保留static
方法时,由于某些问题setter
removed
值为original
(重置为原始值),可能会发生这种情况。因此,在这种情况下,它会返回static
常量URL
值。
<强>更新强>
如果您要更新dynamically
static
,那么method
public static String sUrlBase = "http://google.com";
public static String getsUrlBase() {
return sUrlBase;
}
public static void setsUrlBase(String sUrlBase) {
this.sUrlBase = sUrlBase;
}
将被证明是更好的选择。
{{1}}
答案 2 :(得分:0)
没有区别。您应该使用最简单的方法。通常,您应该使用getter和setter来实现可读性和代码实践。
答案 3 :(得分:0)
通常情况下,我不会过多担心URL等小型简单数据的性能,因此无论是直接字段访问还是使用方法访问都不会让我感到烦恼。 这对我来说有所不同的情况是,当getter调用的频率很高时,它会影响整体响应。 我担心的是意外更改值[bugs :(],因为该字段具有公共静态访问权限。当通过getter / setter访问时,至少有一个地方可以进行一些检查。