java 嵌套调用_Java嵌套类的使用

嵌套类是指被定义在另一个类内部的类,它为外部类提供服务。嵌套类分四种:静态成员类、非静态成员类、匿名类和局部类。

一、静态成员类与非静态成员类的区别?在什么情况下可以用静态成员类?

我们知道在类的设计中,为了避免继承破坏封装性,组合优于继承。通过使用成员类来实现组合设计,需要足够了解它们的特性以及在何时使用。

从表面上看,静态成员类只是比非静态的成员类在声明上多出了修饰符static。尽管它们功能相似,但与实际上,非静态成员类的每个实例都隐含关联着一个外部类的实例。也就是说,非静态成员类不可能独立于它的外部类实例之外而独立存在。

公有静态成员类可作为辅助类,如Compass类中的枚举Dir:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

1 package com.mnid.innerclass;

2

3 public class Compass {

4 private Dir direction = Dir.SOUTH;

5

6 public static enum Dir {

7 EAST, SOUTH, WEST, NORTH;

8 }

9

10 public Dir directing() {

11 //Bulk of class omitted12 return direction;

13 }

14 }

使用私有的静态成员类常见方法是用来代表外围类所代表的对象的组件,如一个Map实例,它的内部都有一个Entry对象对应Map中的所有键-值对,但Entry本身不需要访问Map,因此可以使用私有静态成员类设计。

非静态成员类实例都额外的对外部类实例的引用会引起不必要的开销。如果成员类不需要访问外部类实例,就应该将其声明为static的。

二、匿名类的限制和使用以及局部类

匿名类在声明的同时就进行实例化。它不是外部类的成员,并且只有在非静态环境中才有外围实例引用。

匿名类的常见用法是动态创建函数对象:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

1 public String fetchShortest(String[] strArray) {

2

3 Arrays.sort(strArray, new Comparator() {

4

5 @Override

6 public int compare(String s1, String s2) {

7 return s1.length() - s2.length();

8 }

9 });

10 return strArray[0];

11 }

其他常见用法包括创建过程对象,如Runable、Thread;在静态工厂方法内部也经常用到。

局部类可以在任何声明局部变量的地方声明,其特性与其他三种嵌套类一样。

声明匿名类和局部类时需非常简短,以免影响可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车联网领域,传统TSP企业做错了什么 ?

当下,车联网的定义更加丰富和宽泛,除了传统意义上的Telematics服务,数字服务、移动出行服务、电商平台等将被融入到车联网概念中,与用车相关的维修保养、洗车、代驾等第三方服务,也将成为整车厂整合的重点被纳入到车联…

Shell脚本/bin/bash^M: bad interpreter错误解决方法

2019独角兽企业重金招聘Python工程师标准>>> 在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录。 shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/…

Facebook也大干新闻聚合 “新闻快读”向所有媒体开放

去年五月,Facebook推出了不离开本站直接阅读新闻的聚合服务“新闻快读”(Instant Articles),用户载入文章的速度大增,不过当时只面向一些特定合作的新闻机构。日前,这一聚合服务全面开始接纳所有的新闻媒体…

苹果再次拒绝协助美国政府解锁纽约毒品案中的iPhone

继美国联邦调查局(FBI)成功解锁圣贝纳迪诺市恐袭案枪手 Syed Farook所使用的iPhone 5c后,美国司法部已撤回对苹果公司采取的法律行动。然而近日美国司法部宣布,将继续要求苹果公司协助解锁一部在纽约毒品调查案中查获的iPhone 5s手机。不过苹果今天向美国…

java结构设计_Java基本的程序设计结构(一)

前言:虽然说学过设计模式,J2EE,这个学期才开始学Java,呵呵,有点颠倒了,但是还是要从基本的抓起。hoho~~(一)一个简单的java应用程序Package edu.ynu.java.lession1/*The simplest Ja…

中国制造2025变革,背后的大数据来龙去脉

大数据的成长路径一定是个长期成长过程,实用分析工具与先进分析理念,真正释放数字化分析的力量,由人类轨迹产生的数据,与机器自动产生的数据得出洞见,从管理决策推导运营方案,最终实现数据价值提升。无论是…

java 文件下载 jsp文件_jsp文件 Java实现文件上传与下载

通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面,下载就是url 到发布的资源文件,触发即可自动下载。服务器已经封装了如何下载的底层实现。(此处用的是tomcat)JSP上传文件方法:关于在HTTP request 中通过…

微软免费软件项目DreamSpark更名为Microsoft Imagine

9月10日消息,微软免费软件项目DreamSpark近日正式更名为Microsoft Imagine,将与一年一度的微软“创新杯(Imagine Cup)”齐名。微软免费软件项目DreamSpark更名为Microsoft Imagine  2008年2月19日,微软公司董事长比尔盖茨在斯坦福大学发布了…

阿特斯携手EDF启动建设巴西191.5MW光伏项目

2016年10月11日,阿特斯太阳能(安大略省,圭尔夫)和EDF Energies Nouvelles(法国,巴黎)共同宣布,将阿特斯巴西Pirapora I太阳能项目80%的股权出售给EDF的巴西本地子公司EDF…

一? ilkkn.n_IL&FS的完整形式是什么?

一? il&kkn.nIL&FS:基础设施租赁和金融服务 (IL& FS: Infrastructure Leasing & Financial Services) IL&FS is an abbreviation of Infrastructure Leasing & Financial Services. It is the largest infrastructure development …

java notify唤醒原理_Java wait和notify虚假唤醒原理

自己在此记录一下,方便日后复习。虚假唤醒的概念jdk官方文档解释:所以说在wait和notify一块使用时,如果使用if作为条件时,会有虚假唤醒的情况发生,所以必须使用while作为循环条件。下面来举例实验:首先&…

C#里面的三种定时计时器:Timer

在.NET中有三种计时器:1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置EnabledTrue后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想…

wireshark rto_RTO的完整形式是什么?

wireshark rtoRTO:地区运输办公室/公路运输办公室 (RTO: Regional Transport Office/ Road Transport Office) RTO is an abbreviation of the Regional Transport Office. It is an Indian Government departmental organization that is responsible for upholdin…

有效的网络推广超级实用方法

我叫龙雨,先后在百度搜狗工作过3年,后来一直负责一家公司的的网络营销!不知道大家有没有听过111>3这样一个概念,简单来说一下这概念!第一呢就是自己的资源,把自己的资源维护好开发好;第二就是网络营销,网络营销利用…

linux上mysql分区磁盘位置_Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...

虚拟机中的ORACLE运行的久了,归档、数据文件不断增长,原来安装ORACLE的分区空间不足。此时可以重新向虚拟机增加一块硬盘,将OR虚拟机中的Oracle运行的久了,归档、数据文件不断增长,原来安装ORACLE的分区空间不足。此时…

FloatingActionMenu 向上弹出菜单

本人在github上找到了一个FloatingActionsMenu,精简了其效果(原效果有上下左右四个方向)仅仅保留向上的效果,并做了一定的优化。github上的源代码:地址 ,精简后的源代码地址:源代码地址。 转载于:https://www.cnblogs.…

给孩子一束安全的光 明基WiT MindDuo亲子共读灯首发评测

论一束光的重要性你该听听一个高度近视孩子的自述,论童年陪伴的重要性你该听听一个留守儿童的自述,改善孩子童年的全球第一盏亲子共读台灯,贴合孩子与家长的心灵,量身打造每一种情境的光线去感受孩子成长学习过程 一个高度近视眼孩…

mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...

1、mysql简单的查询:select 字段1,字段2... from tablename;如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都是用*。2、去重查询:selec…

Google再次从官方商店下架伪装成合法程序的恶意应用

本月内的第二次,Google 从官方应用商店 Google Play 移除了伪装成合法程序的恶意应用。被移除的应用都属于名叫 Ztorg 的 Android 恶意程序家族,能利用已知的漏洞 root 被感染的设备,使其很难被删除。自去年 9 月以来,Ztorg 恶意应…

【载誉】致远互联荣获“2017最佳协同管理解决方案”殊荣

6月15日,一年一度的大连软交会于大连市世界博览广场盛大举行。“2017企业服务创新论坛”作为软交会最重要的组成部分之一,本年度以“守正出新——通往基业长青的数字化选择”为主题,吸引到近200位企业级服务领域的企业家及高管参加。致远互联…