访问在其他类的其他包中定义的字符串变量

时间:2013-03-06 09:11:49

标签: java android scope

虽然看起来很容易但我却低了头一段时间。

所以我的班级 Common.java 为:

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

DownloadDataActivity.java as:

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

我不希望重复string WEBSERVICE所以我想从Common.java访问它。

所以我将Common.java更改为string WEBSERVICE为:

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

然后在DownloadDataActivity.java中,我将其视为:

public static String WEBSERVICE = Common.WEBSERVICE ;

这很好但我的问题是:

字符串变量更改为公共静态字符串变量只是为了在另一个类中访问它以及它将如何影响范围是一个好习惯,因为我假设制作这个网址作为公众将允许从任何地方访问?

但是除了在每个类中定义两次URL之外,我没有找到任何其他选择。

2 个答案:

答案 0 :(得分:2)

好吧,你可以声明一个常量String,你可以将它保存在应用程序级别访问的Constants类中。

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);
   }
}

这将是正确的方法。

要使用常量,如果不在任何地方使用这些常量,那么良好的做法是在各个类中使用常量。

如果要从全部应用程序访问常量,您可以在上面的一个类中定义这些常量并使用上述方法。

答案 1 :(得分:1)

是公开会让您的应用中的任何位置都可以访问它 这取决于字符串是否包含一些您不希望暴露给代码的其他部分的信息。 您不希望其他开发人员(或您自己)在其他任何地方偶然/无意地访问它,然后将其设为私有。
否则,即使意外访问不会造成任何伤害,也可以将其公之于众,这样您就可以避免使用少量冗余代码。
第二部分是如果您想允许其他部分更新您的属性。 此外,如果您想为String使用相同的值,请将其设为final 这可能会有助Class attribute declaration: private vs public

相关问题