【Java题】模拟下载进度条

news2024/9/28 5:30:11

目录

一:题目

二:解析

1.匿名内部类

2.lambda

三:结果 


一:题目

使用匿名内部类,模拟下载过程进度条,体会回调函数的作用。
1. 定义 DownloadListener 接口,包含一个包含 void  progressUpdate( int progress);
2. 定义 Download 下载类;
3. 测试类 TestDownload ,实例化 Download 并给出匿名内部类完成
进度显示;
4. lambda 表达式改写该匿名内部类。

二:解析

1.匿名内部类

匿名内部类的好处就是可以使代码可以更简洁,可以在一个类声明的同时创建该类的实例。当某个本地类只使用一次的时候,可以把它定义为匿名类

2.lambda

(1)lambda表达式的简化格式

(匿名内部类被重写方法的形参列表)-> {

        被重写方法的方法体代码

}

(2)lambda的省略规则:

        1)参数类型可以不写

        2)如果只有一个参数,参数类型可以省略,同时()也可以省略

        3)如果lambda方法体只有一行:可以省略大括号不写,同时省略分号,如果这行代码是return,可以省略return

三:结果 

DownloadListener.java

@FunctionalInterface
public interface DownloadListener {
    void progressUpdate(int progress);
}

Download.java

public class Download {
    private DownloadListener downloadListener;
    public Download(){}
    public Download(DownloadListener downloadListener){
        this.downloadListener=downloadListener;
    }
    public void startDownload(){
        System.out.println("开始下载");
        for (int i = 0; i <=100; i+=10) {
            downloadListener.progressUpdate(i);
        }
        System.out.println("下载结束");
    }

}

 TestDownload.java

public class TestDownload {
    public static void main(String[] args) {
        //1.匿名内部类
        Download a=new Download(new DownloadListener() {
            @Override
            public void progressUpdate(int progress) {
                System.out.println("下载进度"+progress+"%");
            }
        });
        //2.lambda
        Download b=new Download((int progress)->{
            System.out.println("下载进度"+progress+"%");
        });
        //3.化简后的lambda
        Download c=new Download (progress-> System.out.println("下载进度"+progress+"%"));

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1073745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【轻松玩转MacOS】安全隐私篇

引言 这一篇将介绍如何保护MacOS的安全&#xff0c;包括如何设置密码&#xff0c;使用防火墙&#xff0c;备份数据等重要环节&#xff0c;避免因不慎操作或恶意攻击带来的安全风险&#xff0c;让你的MacOS之旅更安心、更放心。 一、设置密码&#xff1a;保护你的MacOS的第一道…

高级深入--day29

入门案例 学习目标 创建一个Scrapy项目定义提取的结构化数据(Item)编写爬取网站的 Spider 并提取出结构化数据(Item)编写 Item Pipelines 来存储提取到的Item(即结构化数据)一. 新建项目(scrapy startproject) 在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目…

Maven 构建Java项目

Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用&#xff0c;我们将使用 maven-archetype-quickstart 插件。 在下面的例子中&#xff0c;我们将在 C:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。 命令格式如下&#xff1a; mvn archetype:gene…

语音转文字,功能更强大的工具

这次是从一个微信公众号发现的&#xff0c;尝试了一下其中的方法1&#xff0c;果然强大好用。 方法1 使用 OpenAI 开源的语音转文字模型 Whisper&#xff0c;通过这个模型可以实现语音转文字&#xff0c;即使是离线也能使用。 因为开源的 Whisper 需要通过 python 和命令行来执…

redis中高并发问题

高并发问题 Redis 做缓存虽减轻了 DBMS 的压力&#xff0c;减小了 RT&#xff0c;但在高并发情况下也是可能会出现各 种问题的。 1 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时&#xff0c;就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓…

JVM的内存模型

一、JVM的内存模型 1.1、目标 内存模型是用来描述JVM内部的内存结构和内存管理的模型。它定义了JVM在运行Java程序时所需要的各种内存区域&#xff0c;以及每个内存区域的作用和特点。 1.2、结构划分 1.2.1、栈 每个线程在执行Java方法时会创建一个栈帧&#xff08;Stack …

排序算法——希尔排序

一、介绍: 希尔排序是一种可以减少插入排序中数据比较次数的排序算法&#xff0c;加速算法的进行&#xff0c;排序的原则是将数据区分为特定步长的小区块&#xff0c;然后以插入排序算法对小区块内部进行排序&#xff0c;经历过一轮排序则减少步长&#xff0c;直到所有数据都排…

9月客户文章盘点——累计IF 103.2

客户文章一览 凌恩生物以打造国内一流生物公司为目标&#xff0c;在科研测序领域深耕不辍&#xff0c;吸纳多名在生物信息高级技术人员的加盟&#xff0c;参与并完成多个高科技项目。现已在宏组学、基因组、表观遗传以及蛋白代谢等多组学及联合分析领域积累了深厚经验&#xf…

加密市场陷入钝感期!“等鱼咽气”不可行,定投才是明智之选!

现在整个币圈的市场环境&#xff0c;像极了“在菜市场等鱼咽气”。许多主流加密货币波动率持续下降&#xff0c;锁仓不动的长期筹码占比缓慢抬升&#xff0c;短期投资者反复追高割肉&#xff0c;市场陷入了一种上不去下不来的钝感中。 从筹码层面来看&#xff0c;可以发现比特币…

Redis-02单机数据库的实现

Redis-02单机数据库的实现 1、服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中&#xff0c;db数组的每个项都是一个redis.h/redisDb结构&#xff0c;每个redisDb结构代表一个数据库&#xff1b; 在初始化服务器时&#xff0c…

易点易动固定资产管理系统: 帮助您应对2023年年终固定资产大盘点

作为一名企业的行政人员&#xff0c;我们都了解年终固定资产盘点对于企业来说至关重要。然而&#xff0c;面对众多资产、复杂的流程和繁琐的记录工作&#xff0c;往往会令人感到头疼不已。为了帮助您应对2023年的年终固定资产大盘点&#xff0c;我们推荐易点易动固定资产管理系…

Flink实现kafka到kafka、kafka到doris的精准一次消费

1 流程图 2 Flink来源表建模 --来源-城市topic CREATE TABLE NJ_QL_JC_SSJC_SOURCE ( record string ) WITH (connector = kafka,topic = QL_JC_SSJC,properties.bootstrap.servers = 172.*.*.*:9092,properties.group.id = QL_JC_SSJC_NJ_QL_JC_SSJC_SOURCE,scan.startup.mo…

SpringBoot集成WebSocket讲解

文章目录 1 WebSocket1.1 简介1.2 WebSocket作用和调用1.2.1 作用1.2.2 js端调用 1.3 Javax1.3.1 服务端1.3.1.1 服务端接收1.3.1.2 服务端集成1.3.1.3 ping和pong消息 1.3.2 客户端1.3.2.1 客户端接收1.3.2.2 客户端发送 1.4 WebMVC1.4.1 服务端1.1.4.1 服务端接收1.1.4.2 服务…

Amber中的信息传递——章节1.1-第一部分

了解 AmberTools 从何处开始&#xff0c;这主要是管理软件包中信息传递的问题&#xff0c;请参见图 1.1。首先需要了解模拟程序&#xff08;sander、pmemd、mdgx 或 nab&#xff09;需要哪些信息。 您需要知道这些信息从何而来&#xff0c;又是如何以这些程序所需的形式出现的。…

好看的水滴登录页面

css 如何绘制水滴 可以通过box-shadow 来显示阴影可以通过border-radius 改变水滴的形状当然如果像要使其更加灵活&#xff0c;可以使用animationkeyframes关键帧border-radius&#xff0c;让水滴动起来 是不是很简单 来吧展示效果 html代码&#xff0c;就只有一个div,然后使…

在宝塔面板环境下安装nps服务端

在宝塔面板环境下安装nps服务端 一、所需环境二、开始安装三、打开nps控制台四、更改默认账号密码和连接秘钥五、反向代理挂载SSL证书 一、所需环境 阿里云轻应用服务器&#xff08;选择宝塔应用镜像&#xff09;域名&#xff08;最好也是阿里注册的域名&#xff09;对应的ssl…

RT-Thread 中断管理(学习三)

中断与轮询 当驱动外设工作时&#xff0c;其编程模式到底采用中断模式触发还是轮训模式触发往往是驱动开发人员首先需要考虑的问题&#xff0c;并且这个问题在实时操作系统与分时操作系统中差异非常大。 轮询模式本身采用顺序执行的方式&#xff1a;查询到相应的事件然后进行…

探索跑腿配送App的未来:技术和创新的前沿

跑腿配送App正经历着快速的技术演进&#xff0c;为提供更智能、高效和个性化的服务而不断创新。本文将探讨其中一个可能的创新方向&#xff1a;使用机器学习和实时数据分析来改进配送路线&#xff0c;提高效率&#xff0c;并为用户提供更好的体验。 技术背景 要实现这个创新…

Flink之Watermark源码解析

1. WaterMark源码分析 在Flink官网中介绍watermark和数据是异步处理的,通过分析源码得知这个说法不够准确或者说不够详细,这个异步处理要分为两种情况: watermark源头watermark下游 这两种情况的处理方式并不相同,在watermark的源头确实是异步处理的,但是在下游只是做的判断,这…

【Monorepo实战】pnpm+turbo+vitepress构建公共组件库文档系统

Monorepo架构可以把多个独立的系统放到一起联调&#xff0c;本文记录基于pnpm > workspace功能&#xff0c;如何构建将vitepress和组件库进行联调&#xff0c;并且使用turbo进行任务顺序编排。 技术栈清单&#xff1a; pnpm 、vitepress 、turbo 一、需求分析 1、最终目标…