Java 访问在其他包的其他类中定义的字符串变量
虽然看起来很容易,但我还是低着头看了一会儿 因此,我将我的类Common.java设置为:Java 访问在其他包的其他类中定义的字符串变量,java,android,scope,Java,Android,Scope,虽然看起来很容易,但我还是低着头看了一会儿 因此,我将我的类Common.java设置为: package com.spil.util; public class Common extends Fragment implements SubscriptionListener { String WEBSERVICE = "http://webservice.carrierservice.com/"; } pack
package com.spil.util;
public class Common extends Fragment implements SubscriptionListener
{
String WEBSERVICE = "http://webservice.carrierservice.com/";
}
package com.spil.main;
public class DownloadDataActivity extends TimerTask {
String WEBSERVICE = "http://webservice.carrierservice.com/";
}
类下载DataActivity.java为:
package com.spil.util;
public class Common extends Fragment implements SubscriptionListener
{
String WEBSERVICE = "http://webservice.carrierservice.com/";
}
package com.spil.main;
public class DownloadDataActivity extends TimerTask {
String WEBSERVICE = "http://webservice.carrierservice.com/";
}
我不想重复字符串WEBSERVICE
,所以我想从Common.java访问它
因此,我将Common.java
更改为stringwebservice
:
public static String WEBSERVICE = "http://webservice.carrierservice.com/";
然后在DownloadDataActivity.java
中,我以以下方式访问它:
public static String WEBSERVICE = Common.WEBSERVICE ;
这很好,但我的问题是:
将字符串变量更改为公共静态字符串变量只是为了在另一个类中访问它,这是否是一种良好的做法,以及它将如何影响作用域,因为我假设将此url设为公共将允许从任何地方访问它
但是除了在每个类中定义两次URL之外,我没有找到任何替代方法 Yes public将使您可以从应用程序中的任何位置访问它。
这取决于字符串是否包含一些您不想向代码的其他部分公开的信息。 您不希望其他开发人员(或您自己)从其他任何地方意外/无意地访问它,然后将其设置为私有。
否则,即使是非故意访问也不会造成任何伤害,那么将其公开就可以了,这样您就可以避免几行冗余代码。
第二部分是如果您希望允许其他部分更新您的属性。 另外,如果要对字符串使用相同的值,则将其设为最终值。
这可能有帮助是的,public将使您可以从应用程序中的任何位置访问它。
这取决于字符串是否包含一些您不想向代码的其他部分公开的信息。 您不希望其他开发人员(或您自己)从其他任何地方意外/无意地访问它,然后将其设置为私有。
否则,即使是非故意访问也不会造成任何伤害,那么将其公开就可以了,这样您就可以避免几行冗余代码。
第二部分是如果您希望允许其他部分更新您的属性。 另外,如果要对字符串使用相同的值,则将其设为最终值。
这可能会有所帮助。您可以声明一个常量字符串,并将其保存在应用程序级访问的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);
}
}
这将是正确的方法
要使用常量,最好的做法是在各个类中使用常量,如果这些常量不打算在任何地方使用
若要从整个应用程序中访问常量,您可以像上面一样在一个类中定义这些常量,并使用上面的方法。好的,您可以声明一个常量字符串,并将其保存在应用程序级访问的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);
}
}
这将是正确的方法
要使用常量,最好的做法是在各个类中使用常量,如果这些常量不打算在任何地方使用
如果在整个应用程序中都有可以访问的常量,您可以像上面那样在一个类中定义这些常量,并使用上面的方法。这是合理的,但将敏感url范围从
String WEBSERVICE=
更改为public static final String WEBSERVICE=
仅在另一个类中使用似乎不错?它不会被修改,因为它是最终的,但它是可访问的,因为它现在是公开的。@NandkumarTekale:IMHO对于敏感信息,不建议公开而不是冗余。(对于凭证之类的信息,最好多加几行,使其比公开更安全)。PS:这只是我的观点,不是最佳实践等等。公开常量意味着如果你有接口,并且你将该接口作为API合同公开,那么你所说的就可以了。在上面的例子中,您正在使用类,实现就在您的手中。谢谢,您最后的评论实际上就是我想要的。答案增加了一个值。这是合理的,但将敏感url范围从stringwebservice=
更改为publicstaticfinalstringwebservice=
以便在另一个类中使用似乎不错?它不会被修改,因为它是最终的,但它是可访问的,因为它现在是公开的。@NandkumarTekale:IMHO对于敏感信息,不建议公开而不是冗余。(对于凭证之类的信息,最好多加几行,使其比公开更安全)。PS:这只是我的观点,不是最佳实践等等。公开常量意味着如果你有接口,并且你将该接口作为API合同公开,那么你所说的就可以了。在上面的例子中,您正在使用类,实现就在您的手中。谢谢,您最后的评论实际上就是我想要的。答案增加了价值。