java - 在不创建对象的情况下访问外部类变量是否安全?

标签 java android inner-classes

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

  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();

           }
  }

请指导我。

最佳答案

Java 语言允许内部类访问外部类的私有(private)成员。为了弥合差距,编译器生成了几个合成方法:

有关示例的更多信息 http://developer.android.com/training/articles/perf-tips.html#PackageInner

关于java - 在不创建对象的情况下访问外部类变量是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769062/

相关文章:

Android重新定位 View ,错误的y值

scala - Scala 可以注意到路径相关类型之间的身份吗?

c++ - c嵌套结构上的g++编译错误

java - 在 netbeans 中关闭与 MySQL 的连接

java - 使用 Dagger 进行嵌套/递归注入(inject)

java - ORMLite 混合 orderBy() 和 orderByRaw()

android - 无法在 kotlin android 中以编程方式禁用 EditText

c++ - std::enable_if 不能用于禁用此声明

java - Android应用程序计算错误和崩溃

java - 在java中打印数字数组的所有组合