当前位置: 首页 > 知识库问答 >
问题:

如何从匿名类访问主类?

姚星宇
2023-03-14

我以为我对自己正在做的事情有很好的把握,但每当我觉得我对某事有很好的把握时,我被证明是错的:)

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);




mButton = (Button)findViewById(R.id.m_button);
mButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });

    }

当我不在匿名类中时,我可以简单地执行新的意图(this,secondactivity.class);

有人能解释为什么我可以调用startactivity();方法,但不能在intent参数中使用this吗?

共有1个答案

勾裕
2023-03-14

对于匿名内部类就是匿名类本身。要从匿名类访问外部类this,需要执行outerClassName.this

但是,允许内部类从外部类访问变量和方法。内部类是否匿名并没有什么区别。

参见:

这是静态和非静态内部类之间最重要的区别之一。

您只需要类名(例如),如果两个类中有一个方法具有相同的名称,那么它将调用tell您指的是哪一个。这就是this的情况,内部类和外部类都有一个this-所以默认为内部类,除非您另有说明。

 类似资料:
  • 问题内容: 如何从匿名类的方法内部访问? 问题答案: 如何从匿名类的方法内部访问? 您只需要访问它们即可: 更重要的是:为什么这对您不起作用?

  • 问题内容: 除了使用反射来访问匿名内部类的成员之外,还有其他方法吗? 问题答案: 匿名内部类具有类型,但没有名称。 您可以访问未由命名超类型定义的字段。但是,一旦分配给命名类型变量,该接口就会丢失。 显然,您可以从内部类本身内部访问字段。添加代码的一种方法是通过实例初始化程序: 匿名内部类表达式返回的值具有匿名类型,因此您有机会在类本身之外使用它: 您也可以通过声明类似于以下内容的方法传递它:

  • 如何访问main方法中的匿名内部类对象。它给出了编译时错误,称“无法对非静态方法进行静态引用”。如果我将匿名内部类设置为静态,那么我可以访问我想访问的ut,而不必将其设置为静态。 怎么做。请帮帮忙。

  • 问题内容: 我想使用a 对图进行拓扑排序。为简便起见,我想为比较器使用匿名内部类。但是,我需要访问该图才能确定我正在查看的节点的程度。这可能吗? 正确的代码 问题答案: 是的,使其最终化: 有关最终关键字,请参见最终词: 匿名本地课程 第二种情况涉及最终变量,实际上是语言语义所规定的。在这种情况下,除非声明为final,否则Java编译器将不允许您使用变量。这种情况出现在闭包(也称为匿名本地类)中

  • 假设我有注释类: 如何从它扩展接口?编译器在这方面失败: 游乐场链接:https://www.typescriptlang.org/play/#src=const匿名类=类{} let a: typeof匿名类; 接口I扩展类型的匿名类{

  • 问题内容: 我想在我的JSF(MyFaces 1.2)应用程序中有一个通用菜单。 然后,我在session-scope上的门户将如下所示: 当我运行此代码时,它将显示正常。但是,当您尝试通过单击“ clickme”命令链接执行操作时,将发生以下异常: 有什么方法可以显示匿名类列表,可以从中执行一个方法(在此示例中)? 编辑: 当我使用(内部)类时,它可以工作。例如: 并在Portal构造函数中 但