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 ;

これはうまくいきますが、私の質問は次のとおりです。

別のクラスでアクセスするためだけに文字列変数パブリック静的文字列変数に変更することをお勧めしますか?この URL をパブリックとして作成すると、どこからでもアクセスできるようになると想定しているため、スコープにどのように影響しますか?

しかし、各クラスで URL を 2 回定義する以外に方法はありませんでした。

4

2 に答える 2

2

定数文字列を宣言して、アプリケーションレベルでアクセスされる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つのクラスでそれらの定数を定義し、上記のアプローチを使用できます。

于 2013-03-06T09:41:21.267 に答える
1

はい public は、アプリケーションのどこからでもアクセスできるようにします
コードの他の部分に公開したくない情報が文字列に含まれているかどうかによって異なります。他の開発者 (または自分自身) が偶発的または意図せずに他の場所からアクセスしてプライベートにすることは望ましくありません。
それ以外の場合は、意図しないアクセスでさえ害を及ぼさない場合は、公開しても問題ないため、冗長なコードを数行避けることができます。
2 番目の部分は、他の部分が属性を更新できるようにする場合です。また、String に同じ値を使用する場合は、final にします。
これは、クラス属性の宣言に役立つ可能性があります: プライベート vs パブリック

于 2013-03-06T09:14:20.960 に答える