簡體   English   中英

具有內部類的可變范圍

[英]variable scope with inner classes

我正在我的Android應用程序中創建一個Splash屏幕( Activity )。 我有一個擴展AsyncTask的內部類。 此內部類的構造函數接受一個Context對象,該對象在Splash活動的onCreate方法內發送。 還引用了一個常量String字段。

public class Splash extends Activity {
private static final String TAG = "Splash";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    new SplashAsyncTask(this).execute(new Void[] {});
}
private class SplashAsyncTask extends AsyncTask<Void, Void, Void> {
    private Context context;
    public SplashAsyncTask(Context context) {
        this.context = context;
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Thread.sleep(1500);
        }
        catch(InterruptedException e) {
            if(Constants.LOGGING)
                Log.e(TAG, e.toString());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
    }
}
}

我應該為private static final String TAG = "Splash";使用什么范圍private static final String TAG = "Splash"; 變量? 所有示波器似乎都可以正常工作,但是什么是合適的/更有效的呢? 我注意到eclipse會使用public范圍聲明自動創建變量

另外,我是否真的需要將Context對象發送到SplashAsyncTask構造函數? 還是我/應該在所有需要Context引用的情況下都使用Splash.this嗎?

private和public僅指示如何訪問變量,這是更安全的事情,理想情況下,一個類的所有變量都應為私有,並且您應使用getter和setter方法訪問它們。

我認為“靜態”一詞在這里更為重要,因為制作變量是一件大事,這意味着可以在不創建實例的情況下訪問該變量,並且所有共享此變量的含義與我想說的一樣:

public static final String TAG = "Splash";

那么您可以通過以下方式訪問它:

Splash.TAG

沒有創建它的實例,但是由於它是私有的,所以不能,但是它仍然是您對類Splash進行的所有實例的共享變量

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM