当前位置: 首页 > 面试题库 >

访问内部匿名类成员

艾灿
2023-03-14
问题内容

除了使用反射来访问匿名内部类的成员之外,还有其他方法吗?


问题答案:

匿名内部类具有类型,但没有名称。

您可以访问未由命名超类型定义的字段。但是,一旦分配给命名类型变量,该接口就会丢失。

显然,您可以从内部类本身内部访问字段。添加代码的一种方法是通过实例初始化程序:

final AtomicInteger y = new AtomicInteger();
new Runnable() {
    int x;
    {
        x = 5;
        doRun(this);
        y.set(x);
    }
    public void run() {
        ... blah ...
    }
};

匿名内部类表达式返回的值具有匿名类型,因此您有机会在类本身之外使用它:

final int y = new Runnable() {
    int x;
    {
        x = 5;
        doRun(this);
    }
    public void run() {
        ... blah ...
    }
}.x;

您也可以通过声明类似于以下内容的方法传递它:

<T extends Runnable> T doRun(T runnable);


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

  • 把一个匿名类转成内部类 操作步骤: 菜单栏: Refactor —> Convert Anonymous to Inner...

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

  • 本文向大家介绍Java匿名类,匿名内部类实例分析,包括了Java匿名类,匿名内部类实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下: 内部类 匿名类  首发日期 :2018-03-25 内部类: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】 如果想要通过一个类来使用另一个类,可以定

  • 问题内容: 请看下面的代码: 在上面的代码中,在方法ModifyList()中声明的匿名内部类的实例能够访问传递给该方法的参数。AFAIK Java为内部类创建一个单独的字节码文件。 谁能解释一下Java在字节码级别上如何处理这些局部变量绑定?我的意思是,Java如何精确跟踪对作为参数传递给该方法的对象的引用? 任何帮助将不胜感激! [抱歉我的英语不好! 如果您理解我的问题,请编辑这篇文章,并删除

  • 在以下片段中: 有没有办法从内部匿名类引用匿名类的外部实例? 第二个错误是在解决方案上,我在这里找到了一个匿名内部类的外部类的关键字。这些问题似乎共享一些概念和问题空间,但性质不同。