栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中,当我不在内部类中时,如何访问外部类?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中,当我不在内部类中时,如何访问外部类?

Outer$Inner
该类的字节码将包含一个名为
this$0
type
的包作用域
Outer
。这就是用Java实现非静态内部类的方式,因为在字节码级别上没有内部类的概念。

如果您确实愿意,您应该能够使用反射来读取该字段。我从来不需要这样做,因此最好更改设计以使其不再需要。

这是使用反射时示例代码的外观。天哪,这很丑。;)

public class Outer {    public static void foo(Inner inner) {        try { Field this$0 = inner.getClass().getDeclaredField("this$0"); Outer outer = (Outer) this$0.get(inner); System.out.println("The outer class is: " + outer);        } catch (NoSuchFieldException e) { throw new RuntimeException(e);        } catch (IllegalAccessException e) { throw new RuntimeException(e);        }    }    public class Inner {    }    public void callFoo() {        // The constructor of Inner must be called in         // non-static context, inside Outer.        foo(new Inner());     }    public static void main(String[] args) {        new Outer().callFoo();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/514942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号