`
xhnwsw520
  • 浏览: 2392 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

this$0意义

    博客分类:
  • JAVA
阅读更多
    The bytecode of the Outer$Inner class will contain a package-scoped field named this$0 of type Outer. That's how non-static inner classes are implemented in Java, because at bytecode level there is no concept of an inner class.

You should be able to read that field using reflection, if you really want to. I have never had any need to do it, so it would be best for you to change the design so that it's not needed.

Here is how your example code would look like when using reflection. Man, that's ugly.

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

参考出处:
http://stackoverflow.com/questions/763543/in-java-how-do-i-access-the-outer-class-when-im-not-in-the-inner-class
http://www.tns.lcs.mit.edu/manuals/java-1.1.1/guide/innerclasses/spec/innerclasses.doc2.html
分享到:
评论

相关推荐

    PHP5中的this self和parent关键字详解

    下面将详细解释这三个关键字的意义及其用法。 #### 1. `this` 关键字 `this`关键字在PHP中用于引用当前对象实例的属性或方法。它提供了一种简洁的方式来访问当前对象的成员变量或调用其方法,而无需显式地指定对象...

    asp.net this关键字.txt

    在ASP.NET开发过程中,`this`关键字是一个非常重要的概念,它在类的方法或构造函数中有着特殊的意义与用途。本文将详细介绍`this`关键字的用法及其背后的原理。 #### `this`关键字概述 `this`关键字在C#语言中是一...

    PHP5中的this,self和parent关键字详解教程

    private static $firstCount = 0; private $lastCount; function __construct() { $this->lastCount = ++self::$firstCount; } function printLastCount() { print($this->lastCount); } } $count...

    基于GD2图形库的PHP生成图片缩略图类代码分享_.docx

    imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, ($this->height * $resize_ratio), $this->height); imagejpeg($newimg, $this->dstimg); } else { // 宽度...

    php数据库备份还原类分享

    #### 一、概述 在数据库管理中,备份与恢复是非常重要的环节。... #### 二、类结构与功能...这对于确保数据安全性和提高系统可靠性具有重要意义。开发者可以根据实际需求调整类的配置项,使其更符合特定的应用场景。

    Java中static、this、super、final用法

    ### Java中static、this、super、final用法详解 #### 一、static关键字的使用 在Java编程语言中,`static`是一个非常重要的关键字,它主要用于...理解并熟练运用这些关键字对于提高代码质量和可维护性具有重要意义。

    浅谈JS中几种轻松处理'this'指向方式

    在JavaScript编程中,`this`关键字是一个非常重要的概念,它指向函数执行时的上下文环境,其值由函数调用的方式...掌握`this`指向的正确处理方式,对于深入理解JavaScript语言以及开发高质量的应用程序都具有重要意义。

    通过字节码看java中this的隐式传参详解

    this关键字用于方法里面,用于方法外面无意义。this关键字一般用于set方法和构造方法中。this关键字的隐式传参是指在方法调用时,Java虚拟机(JVM)会自动将当前对象的引用传递给方法,因此在方法中可以使用this...

    magento首页New Pro产品显示数目、列数

    ### Magento首页New Pro产品显示数目、列数解析 在电子商务平台开发与维护的过程中,...这对于优化用户体验、提高页面加载速度等方面都有着重要的意义。开发者可以根据实际需求调整这些参数,以达到最佳的展示效果。

    JavaScript中this关键字使用方法详解

    比如C++、C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要”混乱”的多了。 下面...

    JavaScript Table行定位效果

    this._index = Math.max(0, Math.min(this._oTable.rows.length - 1, isNaN(index) ? this._index : index)); this._oRow = this._oTable.rows[this._index]; var oT = this._oRow, nT = oT.cloneNode(true); 由于...

    Introducing PHP 5.4(.12)

    return array_fill(0, $this->multiplier, $this->data); } } echo json_encode(new MyClass(123, 3)); // 输出 [123, 123, 123] ``` #### 本地会话处理器接口 PHP 5.4中的一个重大改进是增加了对本地会话...

    pe2-DLL.rar_This Is It

    紧接着是PE签名("PE\0\0"),标志着这是一个PE格式的文件。 2. COFF头:接下来是COFF(Common Object File Format)头,它包含了关于目标文件的信息,如机器类型、节的数量、时间戳等。 3. PE头:PE头包括NT头...

    java写的0、1背包问题的解决方案

    Java编写的0、1背包问题解决方案是一...它对于理解和掌握动态规划算法具有重要意义,也是许多面试和算法竞赛中常见的题目。通过不断实践和优化,我们可以提高解决此类问题的效率,更好地应对复杂的数据结构和算法挑战。

    lhl.java.rar_0-1背包

    0/1背包问题是一个经典的动态规划问题,在计算机科学和算法设计中具有重要意义。 0/1背包问题描述如下:假设我们有一组物品,每件物品都有一个重量和一个价值,我们需要将这些物品装入一个容量有限的背包中,目标是...

    OpenCart批量上传插件安装及使用详细教程

    parent_id 是父级分类 id,如果新增分类是顶级分类则填 0,如果是子分类则在表中找到父级分类的 ID。 * 在 Products 表中,product_id 是产品 id,由于产品 id 是递增的,所以新增加的产品 id 即是原来最后一个 ...

    I2C.rar_This Is How

    一个完整的帧包括起始位、7/10位地址、读写位、数据位(0-32字节)、应答位和停止位。起始位和停止位标志着一次传输的开始和结束,地址位指定目标设备,读写位指示操作方向,数据位则是实际传输的信息,应答位用于...

    树控件的使用

    HTREEITEM root = this->m_mytree.InsertItem("湖南农业大学", 0, 0); HTREEITEM child = this->m_mytree.InsertItem("理学院", 0, 0, root); this->m_mytree.InsertItem("信息科学系", 0, 0, child); this->m_...

    Node.js流程控制引擎Stepify.zip

    Stepify(node-stepify) 是一个简单易...step()的调用会创建一个Step实例,用于完成具体的异步操作(当然也可以是同步操作,不过意义不大),step之间使用简单的api(done方法和next方法)传递。 标签:Stepify

Global site tag (gtag.js) - Google Analytics