XyXstudyJava 2022-05-18 15:00 采纳率: 100%
浏览 39
已结题

请问一下,答案为啥这么写,我表示不理解?

这是一道拓展题,我在练的时候写的时候写不出来,不知道为啥中间是这么写的:

img


这是答案:


public class TestAnonymous2 {

    public static void main(String[] args) {
        Test.function().method();
    }

}
interface Inter{
    void method();
}
class Test{
    public static Inter function(){
        return new Inter(){

            @Override
            public void method() {
                System.out.println("测试");
                
            }};
    }
}

以下是我的理解:我看main方法里面用类名调用function()方法,说明这个方法是static修饰的,然后后面有接着个method(),那方法是在function()方法的里面,里面的new Inter是为了不让原来Test不用写Implements Inter 而这么写来实现method方法的么?

  • 写回答

3条回答 默认 最新

  • 小飞LOVE霞 2022-05-18 15:16
    关注
    
    return new Inter(){
     
                @Override
                public void method() {
                    System.out.println("测试");
                    
                }};
    

    我重点解释一下这段代码。
    我们知道,接口是不能直接new的,但是在这里却是合理的,原因就是java帮我们创建了匿名类,默认实现了Inter接口。相当于:

    class MorenClass implements Inter {
      @Override
        public void method() {
            System.out.println("测试");
        }
    }
    
    class Test{
        public static Inter function(){
            return  new MorenClass().method();
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月18日

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容