A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 虾米吃螃蟹 中级黑马   /  2015-7-9 10:42  /  894 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Example99 {
  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 Test.function().method();
  5.         }
  6. }

  7. interface Inter  
  8. {     
  9.     void method();  
  10. }  
  11.       
  12. class Test {
  13.         public static Inter  function(){
  14.                 return new Inter(){
  15.                         public void method(){
  16.                                 System.out.println(4);
  17.                         }
  18.                 };
  19.         }
  20. }  
复制代码
为何当public static Inter function()中的Inter换为void时并把return取消,Test.function().method();会报错

8 个回复

倒序浏览
你调用了function方法,但是你也通过function调用了method这个方法,这个方法你并没有被实现,但是你却调用了,所以报错了
回复 使用道具 举报
兄弟 你都没写接口实现 当然会报错啦
回复 使用道具 举报
a546036242 发表于 2015-7-9 11:23
兄弟 你都没写接口实现 当然会报错啦

此处是匿名内部类
回复 使用道具 举报
一开始function方法返回了一个对象回去,然后对象可以调用method方法,现在你把function没有返回值了,也就是method方法没有了被执行的对象,你还把method孤零零的杵那里了当然要报错啦
回复 使用道具 举报
Bule丶 发表于 2015-7-9 11:21
你调用了function方法,但是你也通过function调用了method这个方法,这个方法你并没有被实现,但是你却调用 ...

应该怎么改写
回复 使用道具 举报

Test.function();
回复 使用道具 举报

Test.function().method();不动,改写test
回复 使用道具 举报
帅帅loyal 发表于 2015-7-9 11:35
一开始function方法返回了一个对象回去,然后对象可以调用method方法,现在你把function没有返回值了,也就 ...

看明白 了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马