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