[英]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.