访问外部类变量而不创建对象安全吗?

时间:2015-04-21 10:05:34

标签: java android inner-classes

我想问一下,如果我创建一个具有一些公共成员的外部类,并且我还在外部类中创建了一个内部类,那么使用外部类变量而不实例化它是否安全? 这两种情况会有什么不同? 因为我在我的应用程序中创建了很多内部类,有时应用程序不能正常工作,我总是怀疑它是由于这个,所以我必须实例化它。 假设我有这个课程:

  Class x extends Activity
  {
        public sharedPreferences sx;
        protected void onCreate(Bundle savedInstantState)
        {    
             super.onCreate(savedInstantState);
             setContentView(R.layout.activity_x);
             sx=getSharedPreferences("name",Context.MODE_PRIVATE);

        }
        private class y extends AsyncTask<Void,Void,Void>
        {
           @override   
           public void doInBackground(Void... arg0){
                  String name=sx.getString("name",name);
           }

           protected void onPostExecute(Void result) {
                 Toast.makeText(getApplicationContext(),name,Toast.LENGTH_LONG).show();

           }
  }

请指导我。

2 个答案:

答案 0 :(得分:1)

Java语言允许内部类访问外部类&#39;私人会员。为弥合这一差距,编译器会生成几种合成方法:

有关示例http://developer.android.com/training/articles/perf-tips.html#PackageInner

的更多信息

答案 1 :(得分:0)

好吧,您的示例代码正在使用不应该使用的方法进行UI操作。如果您想对视图做任何事情(例如Toast,但实际上是什么),您希望在onPostExecuteonProgressUpdate方法上执行此操作。

像您一样访问SharedPreferences 正常