Java—内部类

2023-10-27

It's possible to please a class definition within another class definition. 内部类即定义在另一个类的内部的类。

When you create an inner class, an object of that inner class has a link to the enclosing object that made it, and so it can access the members of that enclosing object-- without any special qualifications. In addition, inner classes have access rights to all the elements in the enclosing class.  一个内部类对象自动的连接到创建它的外部类对象上,并且,在内部类中,有权限访问外部类的各成员。

编译器会在内部类对象中,存储一个其外部类对象的引用。在内部类中,.this表示引用到其外部类对象。例如:

public class DotThis {
    void f () { System.out.println ("DotThis.f ()"); }
    
    public class Inner {
        public DotThis outer () { 
            // DotThis.this 获取外部类的对象的引用
            return DotThis.this;
        }
    }
}

class DotNew {
    public static void main (String[] args) {
        DotThis dt = new DotThis();
        // 通过外部类对象创建内部类对象
        DotThis.Inner dti = dn.new Inner();
    }
}

由于内部类对象要连接到外部类对象,因此在创建内部类对象之前,外部类对象必须已经存在,也就是说,不可能在没有外部类对象的情况下,创建其内部类对象。


内部类访问权限

通常类只能是public或者包访问权限,但内部类可以是public、private、protected以及包访问权限。


匿名内部类

If you're defining an anonymous inner class and want to use an object that's defined outside the anonymous inner class, the compiler requires that the argument reference be final. 如果你在匿名内部类使用一个在匿名内部类外部定义的对象,那么要求传递给匿名内部类的参数是final的。否则将出现编译错误。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java—内部类 的相关文章

  • TaskSchedulerImpl:初始作业尚未接受任何资源;

    这就是我正在尝试做的事情 我创建了DataStax企业集群的两个节点 在其上创建了一个java程序来获取一张表 Cassandra数据库表 的计数 该程序是在 eclipse 中构建的 实际上是来自 windows 盒子 从 Windows
  • 将 frontend-maven-plugin 从 Maven 迁移到 gradle

    我有一个com github eirslett frontend maven plugin in my maven项目
  • 非常大的 JTable、RowFilter 和额外负载

    我想请求澄清 RowFilter 的使用及其对性能的影响 我通过 include Entry 方法实现了一个过滤器 对于每一行 只需检查模型中其对应值是否设置了布尔标志 如果是 则返回 true 否则返回 false 现在 我拥有的 JTa
  • null != Something 和 Something != null 之间的区别

    之间有区别吗null something and something null在爪哇 如果有区别 那么我应该使用哪一个 为什么 之间没有区别null something and something null 你一定在想person getN
  • Android Canvas.DrawBitmap 没有模糊/抗锯齿?

    我正在尝试使用精灵 或非常像素化的角色 背景等 制作一个Android游戏 我把它们画在画布上 就像这样 matrix preScale xrat yrat canvas drawBitmap img matrix null 其中 img
  • 谁能解释一下POJO或POCO的含义和用法[重复]

    这个问题在这里已经有答案了 可能的重复 纯旧 Java 对象 POJO 一词的确切含义是什么 https stackoverflow com questions 3326319 what does the term plain old ja
  • System.out 什么时候不会出现在 Java 控制台中?

    我明白任何要标准化的东西 System out 将出现在 Java 控制台窗口中 启用时 我在某个地方发现 在某些情况下可能无法尝试这样做 例如 在 Swing 应用程序中 是这样吗 基本上 什么情况或设置我不希望在控制台中看到标准输出 例
  • 让线程休眠的更好方法

    我一直在编写有关 Java 8 中 2D 图形的教程 当时 NetBeans 给了我一个提示 Thread Sleep会影响性能 然而 尽管我已经找到了几种更好的方法 但我还没有找到一种方法来包含它们而不弄乱代码 package platf
  • 删除最低位

    给定一个二进制数 删除最低位的最快方法是什么 01001001010 gt 01001001000 它将在代码中用于迭代变量的位 伪代码如下 while bits 0 index getIndexOfLowestOrderBit bits
  • 我的小程序需要客户端访问资源的权限的策略文件位置在哪里?

    我发现我必须编写一个策略文件来授予我的小程序权限 但我真的很困惑 我想编写一个小程序 它是一个地图查看器 我需要在运行我的小程序的客户端上保存图像图块以在本地访问图块 以获得安全地查看地图的速度和时间 这对用户有利 因此 小程序需要授予读
  • Xstream:删除类属性

    我该如何删除类 某事 Xstream 中的属性 我使用带注释的 Xstream 我读了它的代码 发现你的类不是mapper defaultImplementationOf fieldType 它会为你添加默认的类属性 除非类属性名称为nul
  • Java ArrayList,在一行中获取多种类型(int、String 等)的用户输入

    我正在努力提高 Java 水平 我遇到的一个问题是获取用户输入 所有这些都在一行中 如下所示 System out println Please input numbers that you would like to work with
  • Spring方法获取给定类型的所有bean

    我试图从一个相同类型的豆子中获取所有豆子FileSystemXmlApplicationContext 我正在使用factory getBeansOfType SomeType class 但我注意到它只返回顶级 bean 是否有任何其他方
  • 如何在运行时更改 JList 的单元格图标

    如何更改仅一个 JList 单元格的 JLabel 图标 例如 在 JList 中单击 我尝试访问使用 listCellRender 获取的 JLabel 但它不起作用 Override public void valueChanged L
  • Servlet上下文和Spring应用程序上下文的本质区别

    我正在阅读 spring 框架文档 现在我在应用范围概念 http docs spring io spring docs current spring framework reference htmlsingle beans factory
  • 对 JFace Treeviewer 多列进行排序

    我希望用户能够对TreeViewer只要他想 只要单击列标题即可 但是我不知道正确的方法 我发现我们可以使用ViewerComparator对不同的元素进行排序 但是 我不知道如何设置侦听器以便能够正确进行升序或降序排序 有没有办法让 JF
  • @Where 子句在 hibernate join 查询中不起作用

    我有 2 个带有 Where 注释的实体 第一个是类别 Where clause DELETED 0 public class Category extends AbstractEntity 且有如下关系 OneToMany fetch F
  • JJWT依赖混乱

    我继承了一个java项目 在POM xml中有这个
  • 如何使用 Maven 创建新的 Eclipse RCP 项目?

    如何使用 Maven 创建新的 Eclipse RCP 项目 最好是m2eclipse http maven apache org eclipse plugin html 我读到有一个关于 Eclipse 的 Maven 插件 Maven
  • 尝试从输入流检索文本时应用程序挂起

    情况 我确实查看了您的代码 正如我怀疑的那样 您的问题与您发布的代码完全无关 您的 GUI 完全忽略 Swing 线程规则 并在主 Swing 事件线程 称为Event Dispatch T螺纹或EDT 由于该线程负责所有 Swing 绘图

随机推荐

  • iOS上架及ipa包上传到AppStore

    概述 由于苹果的机制 在非越狱机器上安装应用必须通过官方的Appstore 开发者开发好应用后上传Appstore 也需要通过审核等环节 AppCan作为一个跨主流平台的一个开发平台 也对ipa包上传Appstore作了支持 本文从三个流程
  • 通过canvas实现将html的某些元素转为png图片

    有时候我们需要把html或者某些html元素转换为图片 并且支持下载 下面是学习之后的总结 希望能给大家带来帮助 所需插件库 html2canvas js canvas2image js base64 js 资源地址 链接 https pa
  • 蛇形矩阵(完全)

    画 n阶蛇形方阵 比如如图是5阶方阵 5条对角线 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 解题思路 1 分为上三角和下三角 上三角的思路是同蛇形矩阵
  • 训练自己的ai模型(一)学习笔记与项目实操

    ai模型大火 作为普通人 我也想做个自己的ai模型 训练自己的ai模型通常需要接下来的的六步 一 收集和准备数据集 需要收集和准备一个数据集 其中包含想要训练模型的数据 这可能需要一些数据清理和预处理 以确保数据集的质量和一致性 二 选择和
  • clash设置代理后内网访问慢及访问不到问题

    配置忽略代理的ip及域名即可 在 config clash文件夹下新建 proxyIgnoreList plist文件 如果不知道 config clash在哪的 可以通过打开本地文件夹来定位 然后在新创建的文件内写入要忽略代理的域名及ip
  • 链表与节点

    链表 java中通过 node next 表示 node的下一个节点 同理 node next next 表示 node后的第二个节点 通过链表这种数据结构 可以实现许多奇妙的组合 这里我通过接口的方式 把重要的方法进行了封装 虽然只有三个
  • 逆流而上——泛谈对二进制可执行程序的静态反编译

    欢迎对本blog相关主题感兴趣的团体或单位转载相关文章 但转载时请注明出处 谢谢 一 概述 首先应该声明的是 这里讨论的反编译是针对二进制可执行程序进行的静态反向编译操作 虽然对于类似Java Bytecode和MSIL的虚拟机中间代码的反
  • 【layui】 灵活使用弹出层iframe 让你的父界面代码更加清晰

    第一次使用layui框架时候 layer open 使用了最最累赘的 静态布局div 在写入content中不但让你的代码逻辑很乱 而且不利于开发 所以整理一款 弹出层js 是在开发中必不可少的 在此感谢 X admin2 0 提供的源码
  • python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化

    l1范数最小化 考虑函数 显然其在零点不可微 其对应的的次微分为 注意 的取值为一个区间 两个重要定理 1 一个凸函数 当且仅当 为全局最小值 即 为最小值点 2 为函数 不一定是凸函数 的最小值点 当且仅当在该点可次微分且 考虑最简单的一
  • scrapy爬取王者官网壁纸

    1 安装scrapy pip install scrapy pip install Pillow 2 创建项目 scrapy startproject wangzhe cd wangzhe scrapy genspider wz xxx 3
  • 蓝牙定位技术原理--蓝牙人员定位--蓝牙定位--新导智能

    众所周知 蓝牙通讯技能被广泛用于手的机 智能家居 智能穿戴等通讯中 随着物联网生态链逐渐走向成熟 对定位的需求也大大增加 这给蓝牙在该范畴又发明了一番宽广的六合 接下来首要剖析一下蓝牙定位技能的作业原理与首要使用场景 一 蓝牙人员定位原理
  • K8S master高可用,多master节点 (keepalived + haproxy)案例

    说明 Apiserver是用户和 kubernetes 集群交互的入口 封装了核心对象的增删改查操作 提供了 RESTFul 风格的 API 接口 通过etcd来实现持久化并维护对象的一致性 所以在整个K8S集群中 Apiserver服务至
  • Python实战项目(一)网页虚拟访问程序

    作者 尘世镜花恋 声明 本文章纯属个人学习所作 切勿用于非法渠道 转载请注明原文链接 有一些网站 对于本机用户自身的访问也计入访问量内 所以我们可以利用这一点利用自己的电脑提高自己网页的访问量 这里仅介绍用本机ip访问 首先导入reques
  • 小白_Unity引擎_详细Camera以及代码设置

    Cemera摄像机 Unity主要核心组件之一 显示场景中 摄像机照射部分 是向玩家捕获和显示世界的设备 1 ClearFlags 清除标记 显示背景内容 默认为天空盒子 代码设置 m Camera GetComponent
  • PHP的AES加密,模式为“AES/CBC/PKCS5Padding“,含解密

    加密需要php5版本 php7方法已弃用 AES加密请求数据 加密通过AES加密请求数据 param array query return string public function enAES key input size mcrypt
  • 宝塔误删mysql数据如何恢复?(救命题)

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 mysql二进制日志恢复 有很多朋友私信求帮助恢复数据库 可以加微信备注添加原因 如果能帮助解决问题 给点辛苦费就行 有一个朋友 在工作中 复
  • linux系统使用HTTP代理方法

    在Linux系统中使用HTTP代理方法 可以通过设置环境变量来实现 具体步骤如下 1 打开终端 输入以下命令 export http proxy http 代理服务器IP地址 端口号 其中 代理服务器IP地址和端口号需要替换成你所使用的代理
  • Redis——(3)redis三种启动方式以及其中的使用区别

    目录 1 直接启动 redis server 进入到redis的src文件下 2 通过指定配置文件启动 3 使用redis启动脚本设置开机自启动 4 ssh的安装过程 1 直接启动 redis server 进入到redis的src文件下
  • oracle job的创建和删除

    oracle job的创建 declare v jobnum number begin dbms job submit v jobnum lastjob sysdate last day sysdate 1 COMMIT end 或者 DE
  • Java—内部类

    It s possible to please a class definition within another class definition 内部类即定义在另一个类的内部的类 When you create an inner cla