2013-03-06 134 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