代码理解--为什么要这么写?有什么用?怎么调用test()方法?

问题描述

public class IC {public C a(){class B implements C{public void [color=blue]test[/color](){System.out.println("调用test()");}}return new B();}[color=indigo]interface[/color] C{}public static void main(String[] args) {IC ic=new IC(); ic.a();}} 问题补充:是的可以 先 谢谢你!

解决方案

这段代码为什么要这样写 问题问的很好我的经验也不是太丰富 但是可以看书 着段代码是在实践内部类和接口的使用接口本身是一个类 定义在类里面就是一个内部类 B实现了C new出来的B的实例同时也就是C的实例 C c = new B(); c可以调用的方法 只能是c里面声明过的方法 无法调用B里面扩展的方法 内部类里面方法的调用需要依赖于外部类的实例 a方法返回的是一个B类的对象 IC ic=new IC(); ic.a();这段代码实行后 返回的是B的实例 而test方法是定义在B类里 所以楼上的代码 IC ic=new IC(); ic.a().test(); 理论上是可以调用的
解决方案二:
还有,你的程序应该是这样的public class IC {public C a(){class B implements C{public void [color=blue]test[/color](){System.out.println("调用test()");}}return new B();}[color=indigo]interface[/color] C{}public static void main(String[] args) {IC ic=new IC(); ic.a();}}
解决方案三:
我觉得这个是考试的题目SCJP就经常这样搞,主要是考察内部类和接口的知识,实际编程肯定很少这样用,因为这样可读性实在是太差了!
解决方案四:
你这段代码要想调用test,必须要在interface C里面声明test方法,然后调用ic.a().test()就可以了。1.public class IC { 2. public C a(){ 3. class B implements C{ 4. public void test(){ 5. System.out.println("调用test()"); 6. } 7. } 8. return new B(); 9. } 10. interface C{ 11. public void test();12. } 13. public static void main(String[] args) { 14. IC ic=new IC(); 15. ic.a().test(); 16. } 17.}
解决方案五:
你的问题在哪里

时间: 2024-08-23 07:31:41

代码理解--为什么要这么写?有什么用?怎么调用test()方法?的相关文章

线程-java中下面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗

问题描述 java中下面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗 new Thread(new Runnable() {.....省略代码若干..........}).start(); 上面这段代码是一个匿名对象传入一个匿名对象在调用start方法吗 还是一个匿名类传入一个匿名对象再调用start方法 我有点分不清匿名对象和匿名类呢 解决方案 new Runnable() {.....省略代码若干..........} 匿名类,因为Runnable是接口,需要实现类 new

深入理解GIL:如何写出高性能及线程安全的Python代码

6岁时,我有一个音乐盒.我上紧发条,音乐盒顶上的芭蕾舞女演员就会旋转起来,同时,内部装置发出"一闪一闪亮晶晶,满天都是小星星"的叮铃声.那玩意儿肯定俗气透了,但我喜欢那个音乐盒,我想知道它的工作原理是什么.后来我拆开了,才看到它里面一个简单的装置,机身内部镶嵌着一个拇指大小的金属圆筒,当它转动时会拨弄钢制的梳齿,从而发出这些音符. 在一个程序员具备的所有特性中,想探究事物运转规律的这种好奇心必不可少.当我打开音乐盒,观察内部装置,可以看出即使我没有成长为一个卓越的程序员,至少也是有好奇

c语言 数据结构-链表的二路归并 求大神发完整的代码!!不会写啊!

问题描述 链表的二路归并 求大神发完整的代码!!不会写啊! 题目:设有n个待排序元素存放在一个不带表头结点的单链表中, 每个链表结点只存放一个元素, 头指针为r.试设计一个算法, 对其进行二路归并排序, 要求不移动结点中的元素, 只改各链结点中的指针, 排序后r仍指示结果链表的第一个结点. 解决方案 http://wenku.baidu.com/link?url=X2Dpb0WQDM9YCJJj5a9n06t_jE9e_B3ElDT_-6h-JHoFiNrdrAshoye8cfwaNbtveEg

逆向-比如这种 object hook 如果写代码恢复他 应该怎么写。。 求个例子 谢谢。

问题描述 比如这种 object hook 如果写代码恢复他 应该怎么写.. 求个例子 谢谢. 比如这种 object hook 如果写代码恢复他 应该怎么写.. 求个例子 谢谢. 比如这种 object hook 如果写代码恢复他 应该怎么写.. 求个例子 谢谢. 解决方案 http://www.pudn.com/downloads519/sourcecode/windows/freedic/detail2151700.html

利用matlab写好了图片合成代码,如何使我写的代码可以单独拎出来类似软件应用那样,可以单独使用

问题描述 利用matlab写好了图片合成代码,如何使我写的代码可以单独拎出来类似软件应用那样,可以单独使用 10C 利用matlab写好了图片合成代码,如何使我写的代码可以单独拎出来类似软件应用那样,可以单独使用 解决方案 可以用一些工具转换matlab代码为Python的代码. 比如说https://github.com/victorlei/smop. 或者用matlab自带的deploy tool. 可以换成java, c and c++包.http://www.mathworks.com/

objective c-这个obj-c代码在swift要怎么写?

问题描述 这个obj-c代码在swift要怎么写? d1.getData = ^(NSUInteger item) { float x = [vals[item] floatValue]; float y = [vals2[item] floatValue]; NSString *label1 = [NSString stringWithFormat:@""%d"" item]; NSString *label2 = [NSString stringWithForm

这个代码 在加一列写成视图形式怎么写呀

问题描述 这个代码 在加一列写成视图形式怎么写呀 SELECT CONVERT(NVARCHAR, RH.REQ_ID) + '-' + CONVERT(NVARCHAR, EEO.EXP_TYPE) + CONVERT(NVARCHAR, EEO.CURRENCY_TYPE) + '-S' AS ID, RH.REQ_ID, EEO.EXP_TYPE,EEO.ISHAVEBREAKFAST, EEO.CURRENCY_TYPE, SUM(EEO.EXP_PRICE) AS EXP_PRICE,

c++ 编程问题-C++程序 能否将下面代码改成用链表写的

问题描述 C++程序 能否将下面代码改成用链表写的 #include #include #include #include #include #include using namespace std; const int Maxb=10000; //最多的财务收支次数 //财务类,实现对财务的描述,财务的编号,使用者等 class Finance { private: int tag; //删除标记 1:已删 0:未删 int no;//财务编号 char name[20]; //姓名 int

c++今天写双链表时链接错误LNK2001,代码如下(还未写完想测试一下结果没通过)

问题描述 c++今天写双链表时链接错误LNK2001,代码如下(还未写完想测试一下结果没通过) 发到贴吧上问了一次,回复较少,所以又来问一遍 代码在贴吧上http://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&sc=42728746794&z=2748059140#42728746794<!--