Think in Java 中一道有意思的题目

第3版中 第8章的一道题目 关于内部类的

题目如下:
创建一个接口U,它包含三个方法.创建第一个类A,它包含一个方法,在此方法中通过创建一个匿名内部类,来生成指向U的引用.创建第二个类B,它包含一个由U构造成的数组.B应该有几个方法,第一个方法可以接受对U的引用并存储到数组中;第二个方法将数组中的引用设为null;第三个方法遍历此数组,并在U中调用这些方法.在main()中,创建一组A的对象和一个B的对象.用那些A类对象所产生的U类型的引用填充B对象的数组.使用B回调所有的A的对象.再从B中一处某些U的引用.

以下是我的代码 这个题目说明了内部类的一些特性
[code]
package Unit8;
interface U{ //定义一个接口
void a();
void b();
void c();
}
class A{
private int a = 0; //类A的私有成员 注意这个
private String name;
public A(String name){
this.name = name;
}
public U f1(){ //返回接口U的引用
return new U(){
public void a(){System.out.println(name+':'+a);}
public void b(){a++;}
public void c(){}
};
}
}

class B{
public U[] arr = new U[10];
private int index = 0;
public void add(U u){
if(index <arr.length){
arr[index] = u;
index++;
}
else
System.out.print("The array has full");
}

public void clear(int index){
arr[index] = null;
}
public void go(){
for(int i=0;i<arr.length;i++){
arr[i].a();
arr[i].b();
arr[i].c();
}
}
}
public class Ex_28 {
public static void main(String[] args){
A a1 = new A("a1"); //创建三个A的实例
A a2 = new A("a2");
A a3 = new A("a3");
B b = new B();
for(int i=0;i<5;i++){ //A的每个实例分别返回U的引用放到B的数组里
b.add(a1.f1());
}
for(int i=0;i<3;i++){
b.add(a2.f1());
}
for(int i=0;i<2;i++){
b.add(a3.f1());
}
b.go(); //用B回调A 从输出结果上看 几个U的引用在操作各自的对象
}
}

//匿名内部类 可以引用它的外部类
[/code]
输出
[quote]
a1:0
a1:1
a1:2
a1:3
a1:4
a2:0
a2:1
a2:2
a3:0
a3:1
[/quote]
Think in Java:深度解析与实践指南 Java提供了一些常用的函数式接口,如包下的, 和等。这些接口常与Lambda表达式一起使用,来实现不同的功能需求。Java允许我们创建自己的异常类,以提供更具体的错误信息或处理机制。设计自定义异常时,我们应该遵守一些良好的实践:继承适当的父类:如果自定义异常可以被调用者恢复,那么它应该继承自Exception;如果它表示一种编程错误,则应该继承自。提供默认构造器和带有一个字符串参数的构造器,以便能够在抛出时提供错误信息。 阅读详情

相关推荐

3D医学影像分割新突破:手把手教你用MedSAM2快速标注CT/MRI数据(附3D Slicer插件配置)

本文详细介绍了如何利用MedSAM2模型进行3D医学影像分割,包括从环境准备到3D Slicer插件配置的全流程。通过实战案例和技巧分享,帮助医疗从业者快速掌握CT/MRI数据的高效标注方法,提升医学影像分析的准确性和效率。

ujm5678901的博客 299

《Java编程思想》第10章 练习题

练习1:编写一个名为Outer的类,它包含一个名为Inner的类。在Outer中添加一个方法,它返回一个Inner类型的对象。在main()中创建并初始化一个指向某个Inner对象的引用。 练习2:创建一个类,它持有一个String,并且有一个显示这个String的toString()方法。将你的新类的若干个对象添加到一个Sequence对象中,然后显示它们。 练习3:修改练习1,使得Outer类...

lanzijingshizi的博客 2802

低功耗基础概念——Level Shifter cell补充

信号跨越不同级别电压模块进行驱动时,需要使用level shifter。 H2L Level shifer 从高电压到低电压的level shifter,可以是两个反相器的串联。 输入高电平区域信号INH,输出低电平区域信号OUTL,注意供应电源由低电压模块提供,即图中的VDDL。 从图中可以看出,H2L的level shifter只会引入一个buffer的延迟,对时序的影响较小。 L2H Level shifer 用低电压区域的信号invert和buffer之后得到的一对信号来驱动工作在高电压区域的交

qq_36480087的博客 1万+

Java编程思想第十章"内部类"的10.7至10.8小节的笔记和练习题

最近,我的工作很忙,而且10.8小节内容很多、很复杂,即使断断续续的抽时间看了三遍,依然感觉写不好这个小节的笔记。因此,此文中包含10.8小节的部分就当作摘抄,以备后续经常翻看。 10.7 嵌套类 将内部类声明为static,它通常被称为嵌套类。普通的内部类对象隐式地保存了一个指向创建它的外围类对象的引用,而嵌套类则不是这样: ①、要创建嵌套类的对象,不需要外围类的对象。...

hi__study的博客 566

AWS 小白书 [1] 全球架构

小白应该知道的 AWS 知识

boshansolo的博客 704

Windows系统监控实战:Grafana+Prometheus+node_exporter保姆级配置指南(含常见问题解决)

本文提供了一份详尽的Windows系统监控实战指南,详细讲解了如何从零部署Grafana、Prometheus和node_exporter(实际为windows_exporter)监控栈。内容涵盖核心组件认知、分步配置解析、高级生产环境考量,并重点针对配置过程中常见的“No Data”问题提供了系统性的排查手册,旨在帮助用户快速搭建稳定可靠的系统资源监控平台。

weixin_29197835的博客 1008

C#相等性 - 三个方法和一个接口

C#相等性 - 三个方法和一个接口简介C#(.NET)的object类里面有三个关于判断相等性的方法: public virtual bool Equals(object obj)public static bool Equals(object objA, object objB)public static bool ReferenceEquals(ob...

weixin_34209851的博客 169

数字IC后端PPA优化实战:Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中的PPA优化实战,重点解析了Timing一致性问题及其解决方案。通过调整Clock Uncertainty、Timing Derate和RC Scale Factor等关键参数,使Innovus等PR工具的分析结果更接近PrimeTime签核结果。同时,文章详细介绍了Module Region布局技巧,通过为关键模块划定物理区域,优化单元摆放,有效减少线延迟,从而协同提升时序收敛效率与设计可预测性。

weixin_29218963的博客 203

Thinking in java 第10章 内部类 笔记+习题

Thinking in java 第10章 内部类 学习目录 10.1 创建内部类 1. 外部类可以用一个方法返回一个指向内部类的引用。 2. 内部类对象的类型:OuterClassName.InnerClassName 10.2 链接到外部类 1. 当生成一个内部类的对象时,此对象与制造它的外围对象之间就有了一种联系,所以它能访问其外围成员,而不需要任何特殊条件。 2. 例P192。以迭代器设计模式为例。 3. 内部类自动拥有对其外围类所有成员的访问权。当某个外围类的对象创建了一个内.

soyamilk233的博客 727

条件风险价值CVaR内容介绍(MATLAB例程)

在对微电网优化调度过程中,由于新能源机组出力和负荷的不确定性,若采用确定性的优化调度方案会存在一定的风险。反之,若风电和光伏输出功率的实际值高于预测值时,则需要降低可控机组出力或者弃风弃光,这都会给系统带来运行费用增加的风险。下,损失超过VaR值时的条件均值[1]。VaR是指在一定的置信水平下,某一投资组合在未来某一时间段内的最大损失。为m维决定系统风险损失的随机向量f(y)为y的概率密度函数。式中,m为所有场景的数量,yk为第k个场景下随机变量的值,为第k个场景发生的概率。的最小值即为CVaR,对应的。

贾贾的博客 3060

手把手用ROS实现Ego-Planner动态避障:无人机撞树问题终结方案

本文详细介绍了如何在ROS和Gazebo仿真环境中,通过配置和调优Ego-Planner算法,实现无人机的动态避障功能。文章深入解析了其基于局部梯度优化的核心思想,提供了从环境搭建、参数详解到代码集成的完整实践指南,并分享了实战排错经验,旨在彻底解决无人机在复杂动态场景中的碰撞问题。

weixin_29031161的博客 1630

Think in patten of Java中的一道习题

这个问题我曾在论坛上发过,但没有解答。放在这里,给大家看看:Think in partten of Java 中,关于Dynamic Proxies,有这么一道习题:Exercise: Use the Java dynamic proxy to create an object that acts as a front end for a simple configuration file. Fo

Webcraft的专栏 1625

Android 埋点信息分析——statsd框架

StatsPullAtomService 用以采集数据,并将数据填充到参数中,在StatsManager.PullAtomCallbackInternal 中会转换成 Parcel 格式传入到 native。 StatsCallbackPuller::PullInternal 中会回调StatsManager.PullAtomCallbackInternal 的onPullAtom,该函数中会回调StatsCallbackPuller::PullInternal 中定义的PullResultRecei

私房菜 2629

Think IN JAVA ①

昨天开始在网上在线看Think IN JAVA的,工作之余在看,或许是这几天刚好没啥事,顺便看看,反正就是在看这本书,在家也看。  两天看了两章了,速度够快的,但是没什么感觉,都是最基础的思想疏导,我简要做一下笔记,反正这两章对于我目前来说没多大作用,也不是白看,存在即是合理的,但是对于没有java基础的人来说,理解这些东西不是那么容易滴,好,我做如下简约的记录: 第一章:对象入门 1.抽象

corey_jk的专栏 659

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Think in Java之多态

多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态方法调用允许亿欧汇总类型表现出与其他相似类型之间的区别。

m0_65909361的博客 1447

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

看think in java感想

<br />       think in java 从书的内容来说,却实是一本写得不错的书。TMD出版社和翻译人员只为了钱,里面不通顺,英式汉语的句子很多。难道一定要直译吗?按汉语的顺序从排一下不行吗?最可恨的是:通常你必须以javaScript某种最小公分母形式编程,以使得你的程序可以在所有浏览器上运行(倒数第五行)。一种编程语言,竟然有‘某种最小公分母形式’。意译为:兼容每种浏览器子集的形式,不是更好吗?<br />书中间有错别字,校正人员是酒囊饭袋。有些程序写错了,还有些运行结果写的不正确。

lilianplayer_163的专栏 571

《Think in Java》

java的一个优点就是,一开始就内置了异常处理,并且强制程序员必须去使用,java将异常也当作一种对象,从错误的地点抛出,异常不能被忽略,必须在程序运行的某处得到处理,被专门设计用来处理特定类型错误的异常处理器捕获,异常处理就像和程序运行并行的,错误发生时执行另一个路径,不会干扰正常代码的执行。比如我们向circle类发送请求,我们就将其当成shape类,我们不需要关系其所属的特定类,因为所有shape子类都实现了shape类的绘制,擦除与移动的方法,我们不需要担心其如何实现。第二是出于效率原因。

qq_35693377的博客 775

我为什么把think in java读了10遍

我在想写这篇博文之前,就曾经对我媳妇(她是做web前端的)讲,我把think in Java看了几次几次,媳妇那时就用很羡慕和莫名的眼神看着我说,你真有毅力,我当时就蒙了,我以为她会说,你现在基础一定很好,很强大之类的话,但是她没有,我有点失望,不过自打我把这本书看了5便之后,我只要有时间就和她讲基础的重要性之类的话,直到她十分厌烦,其实那时我知道,虽然我看了好几遍,但其实根本没有看明白,这句话我一

niugehaohshuai的博客 804

我为什么把think in java 读了10遍

我在想写这篇博文之前,就曾经对我媳妇(她是做web前端的)讲,我把think in java看了几次几次,媳妇那时就用很羡慕和莫名的眼神看着我说,你真有毅力,我当时就蒙了,我以为她会说,你现在基础一定很好,很强大之类的话,但是她没有,我有点失望,不过自打我把这本书看了5便之后,我只要有时间就和她讲基础的重要性之类的话,直到她十分厌烦,其实那时我知道,虽然我看了好几遍,但其实根本没有看明白,这句话我

张拭心的博客 shixinzhang 1596

看完《think in java》后有感

之前,只是听说JAVA有一本很牛的书叫《think in java》 昨天晚上,看了一些之后有巨大的感触。感觉之前的3年开发真的白干了。 个人理解的软件开发分为以下几个步骤: 1、先做技术选型,从技术的开源与否、兼容性、拓展性还有更新速度来考虑。 2、搭出技术架构。 3、在脑中构思出代码的设计模式,或者回忆已使用过的设计模式经验。 ...

u013934598的博客 530

think in java

think in java 4

sn201的博客 196

Think in Java(中文版)优质排版

Think in Java(中文版)优质排版 去发现同类优质开源项目:https://gitcode.com/ 简介 欢迎来到《Think in Java(中文版)优质排版》资源文件下载仓库!这里提供了一本经典编程书籍的中文版,由美国作家Bruce Eckel著作,陈昊鹏翻译。本书深入浅出地介绍了Java编程语言的核心概念和编程技巧,帮助读者掌握Java编程的基本原理,理解其设计哲学,并能够灵活运...

gitblog_06718的博客 549

Think in Java中net.mindview.util.*包下载地址

Think  in Java中net.mindview.util.*包下载地址:点击打开链接里面有所有的代码

qq_35431229的博客 929

Think in java

Think in java Think in java Think in java

草帽 227
上一篇: 博逸网友大家好
下一篇: 下雪了
mepjava
博客等级 码龄20年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值