首页 > 编程语言 >Java匿名内部类

Java匿名内部类

时间:2023-06-21 17:36:42浏览次数:43  
标签:Java 内部 void 接口 IA 匿名 ia new

class Outer {
    public void f(){
        IA ia = new IA(){
            @Override
            public void say() {
                System.out.println("hi~");
            }
        };
        ia.say();
        System.out.println(ia.getClass().getName());
    }
}

interface IA {
    void say();
}
public class test {
    public static void main(String[] args) {
        new Outer().f();
    }
}

关于这段代码肯定有很多疑问,我来一一解释一下。

先来看一个需求:我有一个接口,现在我想要实现接口里面的方法,并且在Outer类的f()方法里去使用这个方法。

常规的方法就是写一个新的类,让这个类去实现这个接口,然后再new一个对象,通过对象去调用这个方法。可是如果我这个方法只用一次的话,这样去做就显的代码有一些啰嗦,如果再来一个接口就又要写一个新的类......,这样想想都烦。所以我们就可以使用匿名内部类去解决这个问题。

所以上面这段代码就可以这样理解:

IA ia = new IA(){}
这里肯定有很多疑问,为什么可以实例化一个接口?其实这里不是实例化一个接口,这里在底层就相当于系统去创建了一个实现了IA接口的类(也就是匿名内部类),然后立马去创建了这个类的对象,接着返回给ia,让ia去指向这个对象,最后要注意,底层在创建了一个对象之后,这个类就没有了(不是说ia没有了,只是匿名内部类没有了,但是返回的对象还是存在的)。

这就是匿名内部类的一个大体过程,那我为什么说匿名内部类其实是有名字的呢,其实只要调一下ia的getclass方法就可以很清楚的看到底层创建的匿名内部类的名字了.

原文链接:https://blog.csdn.net/qq_58453382/article/details/122051661

标签:Java,内部,void,接口,IA,匿名,ia,new
From: https://www.cnblogs.com/weidaijie/p/17496768.html

相关文章

  • Java基础-Day01
    Java基础-Day01JDKJREJVM关系JDK=(Java开发工具包)=Java的开发工具(javac.exe,java.exe,javadoc.exe等)+JRE(Java运行环境)JRE=JVM(Java虚拟机)+Java核心类库JDK的下载、安装下载:官网,gitbub安装:傻瓜式安装:JDK/JRE注意问题:安装软件的路径中不能包含中文、空格为什么要配......
  • 【淘宝API接口系列】获取sku详细信息Java获取源代码演示
    ​ 淘宝商品SKU详细信息API接口是指通过开放平台提供的API接口,可以根据商品ID和SKUID等参数,获取淘宝商品SKU的详细信息,包括SKU的价格、库存、销售属性、skuUrl、sku图片等。其作用是方便开发者通过调用API接口,获取淘宝商品SKU的详细信息,进而实现商品价格比较、商品数据采集、......
  • iOS开发笔记 - Objective-C和JavaScript的混编
    最近看了一个对Github上面编程语言使用统计的排行榜,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程......
  • javainteger类-偷偷藏不住的想带大家领悟int 和 Integer 的区别
    其实在Java编程中,int和Integer都是非常常用的数据类型,但它们之间存在一些关键的区别,特别是在面向对象编程中。所以接下来,就让我们一起来探讨下关于int和Integer的区别这个问题吧。1.int和Integer的定义int是Java中的一种基本数据类型,用于表示整数。它是Java语言中最常用的数据类型......
  • 53基于java的资源博客论坛系统设计与实现
    ​>本章节给大家带来一个基于java的资源博客论坛系统设计与实现,可适用于java个人博客系统,个人资源博客管理系统,java博客系统,java论坛系统,类似于交友微博,新浪微博,发表动态,笔记博客,个人笔记系统。项目背景在这个网络充斥生活的时代,我们每天的生活都被网络包围着,有时候我们更多的......
  • java+rest方式写一个邮件发送接口
     1<!--发邮件-->2<dependency>3<groupId>org.springframework.boot</groupId>4<artifactId>spring-boot-starter-mail</artifactId>5</dependency>67<dep......
  • javascript WebUploader 分块上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • JAVA之树的详解
    JAVA之树的详解度:每一个结点的子节点数量树高:树的总层数根节点:最顶层的节点左子节点:左下方的节点右子节点:右下方的节点二叉查找树特点每一个节点上最多有两个子节点任意节点左子树上的值都小于当前节点任意节点右子树的值都大于当前节点添加节点规则小的存......
  • JavaScript异步编程:异步的数据收集方法
    我们先尝试在不借助任何工具函数的情况下来解决这个问题。笔者能想到的最简单的方法是:因前一个readFile的回调运行下一个readFile,同时跟踪记录迄今已触发的回调次数,并最终显示输出。下面是笔者的实现结果。Asyncjs/seriesByHand.jsvarfs=require('fs');process.chdir('recipes'......
  • JavaScript版本的策略模式
    俗话说,条条大路通罗马。在美剧《越狱》中,主角MichaelScofield就设计了两条越狱的道路。这两条道路都可以到达靠近监狱外墙的医务室。同样,在现实中,很多时候也有多种途径到达同一个目的地。比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路。如果没有时间但是不在乎......