`
dpzc
  • 浏览: 13052 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于内嵌类

    博客分类:
  • java
 
阅读更多
内嵌类有两种类型:内联(inner)类和静态内嵌(static nested)类。
主要的区别:
一、内联类可以访问定义在外围类(enclosing class)中的实例变量。静态内嵌类不可以。

二、内联类是完全封装在外围类中的。而静态内嵌类可以被外部代码使用,只要不是private的。如静态内嵌类Entry用来遍历Map对象中的key-value对。在Map之外的代码上下文,需要用Map.Entry来引用这个类。

因此,将内嵌类声明为静态的首要原因是,让其他类可以使用它。虽然可以将类声明为顶层类(top-level,也就是非内嵌类),但可能希望把他紧密地绑定在容器类中。例如Map.Entry被紧密地绑定到Map;因为如果缺少Map,Entry类就没有存在的意义。
第二个原因是,允许将其序列化。不能序列化内联类对象,因为他们能够访问外围类的实例变量。


参考文献 Agile Java
分享到:
评论
1 楼 twocat 2009-12-01  

相关推荐

    JAVA内嵌类代码.rar

    内嵌类分为四种主要类型:静态内嵌类、成员内嵌类、局部内嵌类和匿名内嵌类。下面将详细介绍这四种类型的内嵌类及其基本规则。 1. 静态内嵌类(Static Nested Class): 静态内嵌类与普通类相似,可以拥有静态成员...

    用代码对类的几种关系描述(多重继承 依赖 内嵌类 聚合类 )

    通过代码来显示什么是类的继承、多重继承、内嵌类、包容类等的一个感性认识,本程序主要起到抛砖引玉的功效,没有实际的功能,程序中注释的行一定要多加考虑,最后考虑一下把所有关于类的关系做一个全排列组合,看看...

    代码编程题

    此外,还有关于内嵌类的题目,给出了一些内嵌类的声明选项: **内嵌类声明选项:** A. 不正确,因为内部类不能声明为 `public static`,并且不能直接访问外部类的非静态成员。 B. 不正确,理由同 A。 C. 正确,内部...

    将html外部的样式内嵌的工具类.rar

    标题 "将html外部的样式内嵌的工具类.rar" 提供了一个关于Java代码实现的工具,该工具的主要功能是处理HTML文件,将原本存在于外部CSS文件中的样式内联到HTML标签中。这种做法在某些场景下非常有用,比如富文本编辑...

    内嵌tomcat实例代码.rar

    本实例代码提供了关于如何在Java项目中内嵌Tomcat的具体实现。 在Java中,我们通常使用Apache Tomcat的内嵌API或第三方库如Spring Boot来实现内嵌Tomcat。Apache Tomcat的内嵌API允许开发者在Java程序中直接创建和...

    QT内嵌IE浏览器

    在QT中,可以使用QAxWidget类来与ActiveX控件交互。QAxWidget是QT中的一个特殊窗口小部件,它允许你在QT界面上插入并操作ActiveX控件,例如IE浏览器。 实现步骤大致如下: 1. **配置QT环境**:首先确保你的QT开发...

    Java内嵌式Tomcat-TomcatDemo

    Java内嵌式Tomcat,全称为Apache Tomcat,是一款开源且免费的应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)等Web应用程序。它由Apache软件基金会开发,是Java EE生态中的一个关键组件。在...

    内嵌视图简介

    ### 内嵌视图简介 #### 一、视图概述及其分类 在Oracle数据库系统中,视图是一种非常重要的逻辑结构,它可以帮助我们更高效地管理和查询数据。根据不同的应用场景和目的,视图主要分为四种类型:关系视图、内嵌...

    C# WinForm 读取内嵌资源范例

    3. **访问资源**:在代码中,我们可以使用`ResourceManager`类来访问内嵌资源。首先,获取资源管理器对象,然后调用`GetObject`或`GetString`方法,根据资源类型选择适当的方法。例如,对于一个图片资源,可以这样做...

    如何在C#中使用内嵌资源文件

    获取内嵌资源通常通过`Assembly`类的`GetManifestResourceNames`和`GetManifestResourceStream`方法完成。`GetManifestResourceNames`返回所有内嵌资源的名称列表,而`GetManifestResourceStream`则根据给定的资源...

    c++语言写一个用于人事管理的类,其中日期声明一个日期类内嵌

    设计一个用于人事管理的“人员”类。抽发象出的属性为:编号,性别,出生日期,身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数...

    Unity内嵌浏览器Embedded Browser 3.0.0

    1. **WebGLTexture**: Unity中的WebGLTexture类用于表示WebGL渲染的目标纹理。内嵌浏览器会将网页渲染到这个纹理上,然后通过Shader显示在屏幕上。 2. **WebPlayer** 和 **WebGL Player**: Unity的WebPlayer已经被...

    行业分类-设备装置-内嵌信息的多媒体文件.zip

    标签“行业分类-设备装置-内嵌信息的多”可能是指该压缩包包含了关于不同行业类别中设备装置如何处理或利用内嵌信息的多媒体内容。 在IT领域,内嵌信息通常指的是将元数据或其他相关信息直接存储在媒体文件内部,...

    内嵌式tomcat启动web工程

    除了基本的配置,我们还可以定制更多选项,比如修改端口号、设置系统属性、添加额外的JARs到类路径等。例如,如果你想改变Tomcat的端口号,可以在`<configuration>`标签中添加`port`属性: ```xml ... <port>...

    Java内嵌浏览器eclipse.swt插件版

    "demo eclipse工程实例"可能是一个包含示例代码的Eclipse工程,演示了如何在Java应用中使用SWT的Browser类创建内嵌浏览器。这为初学者提供了快速上手的起点,通过运行和修改示例代码,他们可以了解如何使用SWT来实现...

    c# 内嵌式数据库 源代码

    标题 "c# 内嵌式数据库 源代码" 提示我们这个项目是关于用C#语言构建一个内嵌式数据库的源代码实现。这可能涉及到以下关键知识点: 1. **数据结构与算法**:内嵌式数据库的核心是数据的存储和检索,因此需要对数据...

    FlexGrid控件 内嵌编辑框CEdit

    对于描述中提到的“不内嵌编辑框也能使FlexGrid进行文字输入的Grid类”,这可能是指FlexGrid控件自身具有的一种文本输入机制。即使没有显式地内嵌CEdit控件,用户仍然可以在单元格中输入文本。这种机制可能通过捕获...

    QT在windows上内嵌IE浏览器

    要实现在Qt界面上内嵌IE浏览器,我们需要利用QAxWidget类,这是Qt提供的一个用于与ActiveX控件交互的组件。QAxWidget允许我们在Qt应用中使用Windows上的ActiveX控件,例如IE浏览器控件(名为"Shell.Explorer.2")。 ...

    内嵌RadioButton的ListBox

    在这个文件中,开发者可能定义了一个自定义控件类,继承自ListBox或其他基础控件,并添加了RadioButton的处理逻辑。这包括但不限于: 1. **事件处理**:如Click事件,当用户点击某个RadioButton时,需要确保其他...

    在C 中内嵌汇编.docx

    假设我们有一个类`MyClass`,其成员函数需要通过内嵌汇编优化: ```cpp class MyClass { public: int GetArgument(int ai) { __asm { mov eax, ai } } }; ``` 对于`thiscall`,第一个参数`this`通常位于`ecx`...

Global site tag (gtag.js) - Google Analytics