2013-03-06 132 views
0

儘管看起來很簡單,但我暫時停下了頭。訪問在其他類的其他包中定義的字符串變量

所以,我有我的類Common.java爲:

package com.spil.util; 
     public class Common extends Fragment implements SubscriptionListener 
     { 
      String WEBSERVICE = "http://webservice.carrierservice.com/"; 
     } 

而且作爲類DownloadDataActivity.java

package com.spil.main; 
public class DownloadDataActivity extends TimerTask { 
String WEBSERVICE = "http://webservice.carrierservice.com/";  
} 

我不想string WEBSERVICE要重複所以我想從Common.java訪問它。

因此,我改變Common.javastring WEBSERVICE爲:

public static String WEBSERVICE = "http://webservice.carrierservice.com/"; 

然後在DownloadDataActivity.java,我在訪問它爲:

public static String WEBSERVICE = Common.WEBSERVICE ; 

這工作得很好,但我的問題是:

字符串變量更改爲公共數據是否是一種很好的做法ic字符串變量只是爲了在另一個類中訪問它,以及它如何影響範圍,因爲我認爲將此URL設置爲公共將允許從任何地方訪問它?

但我沒有找到任何替代方法,只是在每個類中定義了兩次URL。

回答

2

嗯,你可以聲明字符串常量,你可以保持它在其內部在應用程序級訪問的常量類。

public final class Constants { 
    public static final String WEBSERVICE = "http://webservice.carrierservice.com/"; 
    // other application level constants 
} 

訪問應用程序中的任何地方不斷使用靜態導入爲:

package com.spil.main; 

import static comp.app.util.Constants.WEBSERVICE; 

public class DownloadDataActivity extends TimerTask { 
    someMethod() { 
     makeCallToService(WEBSERVICE, otherParams); 
    } 
} 

這是正確的做法。

要使用常量,最好的做法是在各個類中使用常量,如果這些常量不會在任何地方使用。

如果在整個應用程序中都有要訪問的常量,那麼可以像上面那樣在一個類中定義這些常量,並使用上面的方法。

+0

這是合理的,但將敏感的URL範圍從'String WEBSERVICE ='改爲'public static final String WEBSERVICE ='只是在另一個類中使用它似乎很好?它不會被修改,因爲它是最終的,但它是可訪問的,因爲這是公開的。 – 2013-03-06 09:48:40

+0

那麼,你要使用它。這是好的,沒問題。 – 2013-03-06 09:56:45

+0

@NandkumarTekale:恕我直言,敏感信息,公開曝光不建議超過冗餘。 (對於像憑證這樣的信息,可以添加更多的行,並使其更加安全,而不是公開)。 PS:它只是我的意見,而不是最佳實踐等。 – xyz 2013-03-06 10:00:17

1

是的,公衆可以從任何地方訪問您的應用
它取決於字符串是否包含一些您不希望暴露給其他代碼部分的信息。 您不希望其他開發人員(或您自己)即使偶然/無意地從其他任何地方訪問它,然後將其設爲私有。
否則,如果連意外訪問都不會造成任何傷害,那麼它可以公開使用,這樣可以避免少量冗餘代碼。
第二部分是如果你想允許其他部分更新你的屬性。 此外,如果你想使用相同的值爲字符串,然後使其最終。
這可能有助於Class attribute declaration: private vs public