中小企业为什么要建网站oppo软件商店安装

diannao/2026/1/21 8:53:20/文章来源:
中小企业为什么要建网站,oppo软件商店安装,网站开发招标技术要求,wordpress无法更新前言 在上一篇文章中#xff0c;我解释了如何以及为什么在Java代码中使用enums而不是switch/case控制结构。 在这里#xff0c;我将展示如何扩展现有enums功能。 介绍 Java enum是一种编译器魔术。 在字节码中#xff0c;任何enum都表示为扩展抽象类java.lang.Enum并具有几… 前言 在上一篇文章中我解释了如何以及为什么在Java代码中使用enums而不是switch/case控制结构。 在这里我将展示如何扩展现有enums功能。 介绍 Java enum是一种编译器魔术。 在字节码中任何enum都表示为扩展抽象类java.lang.Enum并具有几个静态成员的类。 因此枚举不能扩展任何其他类或枚举没有多重继承。 类也不能扩展枚举。 此限制由编译器强制执行。 这是一个简单的enum enum Color {red, green, blue} 此类尝试扩展它 SubColor class extends Color {} 这是尝试编译类SubColor的结果 $ javac SubColor.java SubColor.java: 1 : error: cannot inherit from final Color SubColor class extends Color {} ^ SubColor.java: 1 : error: enum types are not extensible SubColor class extends Color {} ^ 2 errors Enum既不能扩展也不能扩展。 那么如何扩展其功能呢 关键字是“功能”。 Enum可以实现方法。 例如枚举Color可以声明抽象方法draw() 每个成员都可以重写它 enum Color {red { Override public void draw() { } },green { Override public void draw() { } },blue { Override public void draw() { } },;public abstract void draw(); } 在此说明该技术的流行用法。 不幸的是不可能总是在枚举本身中实现方法因为 枚举可能属于第三方库或公司中的其他团队 枚举可能被过多的其他数据和函数重载因此变得不可读 枚举属于模块该模块不具有实现方法draw所需的依赖项。 本文针对此问题提出了以下解决方案。 镜像枚举 我们不能修改枚举颜色吗 没问题 让我们创建具有与Color完全相同的元素的枚举DrawableColor。 这个新的枚举将实现我们的方法draw enum DrawableColor {red { Override public void draw() { } },green { Override public void draw() { } },blue { Override public void draw() { } },;public abstract void draw(); } 这个枚举是源枚举Color的一种反映即Color是它的镜像 。但是如何使用新的枚举 我们所有的代码都使用Color而不是DrawableColor 。 实现此过渡的最简单方法是使用内置的枚举方法name和valueOf如下所示 Color color ... DrawableColor.valueOf(color.name()).draw(); 由于name()方法是最终方法不能被覆盖并且valueOf()由编译器生成因此这些方法始终相互配合因此在此不会出现功能问题。 这种过渡的性能也很好方法name甚至不创建新的String而是返回预初始化的String请参见java.lang.Enum源代码。 方法valueOf()是使用Map实现的因此其复杂度为O1。 上面的代码包含明显的问题。 如果更改了源枚举Color则辅助枚举DrawableColor将不知道这一事实因此具有name()和valueOf()的技巧将在运行时失败。 我们不希望这种情况发生。 但是如何防止可能的故障 我们必须让DrawableColor知道其镜像是Color并且最好在编译时或至少在单元测试阶段强制执行此操作。 在这里我们建议在单元测试执行期间进行验证。 Enum可以实现时所执行的静态初始化enum中的任何代码被提及。 这实际上意味着如果静态初始化程序验证枚举DrawableColor是否适合Color则足以执行以下测试以确保代码不会在生产环境中被破坏 Test public void drawableColorFitsMirror {DrawableColor.values(); } 静态初始化器只需要比较DrawableColor和Color元素如果不匹配则抛出异常。 该代码很简单可以针对每种特定情况编写。 幸运的是名为enumus的简单开放源代码库已经实现了此功能因此任务变得微不足道 enum DrawableColor {....static {Mirror.of(Color.class);} } 而已。 如果源枚举和DrawableColor不再适合则测试将失败。 实用程序类Mirror其他方法有2个参数必须包含2个枚举的类。 可以从代码中的任何位置调用此版本而不仅仅是从必须经过验证的枚举中调用。 枚举地图 我们是否真的必须定义仅包含一种方法的实现的另一个枚举 实际上我们不必这样做。 这是一个替代解决方案。 让我们定义接口抽屉如下 public interface Drawer {void draw(); } 现在让我们在枚举元素和接口Drawer的实现之间创建映射 MapColor, Drawer drawers new EnumMap(Color.class) {{put(red, new Drawer() { Override public void draw();});put(green, new Drawer() { Override public void draw();})put(blue, new Drawer() { Override public void draw();}) }} 用法很简单 drawers.get(color).draw(); 这里选择EnumMap作为Map实现以获得更好的性能。 Map保证每个枚举元素仅出现一次。 但是它不能保证每个enum元素都有相应的条目。 但是检查映射的大小等于enum元素的数量就足够了 drawers.size() Color.values().length 枚举还建议在这种情况下方便实用。 如果地图不适合Color则以下代码将引发IllegalStateException及其描述性消息 EnumMapValidator.validateValues(Color. class , map, Colors map ); 从单元测试执行的代码中调用验证器很重要。 在这种情况下基于地图的解决方案对于将来对源枚举的修改是安全的。 EnumMap和Java 8功能接口 实际上我们不必定义特殊的接口来扩展 枚举功能。 从版本8开始我们可以使用JDK提供的功能接口之一 Function,BiFunction,Consumer,BiConsumer, Supplieretc Function,BiFunction,Consumer,BiConsumer, Supplieretc Function,BiFunction,Consumer,BiConsumer, Supplieretc 。选择取决于必须发送给功能的参数。 例如可以使用Supplier代替上一个示例中定义的Drawable MapColor, SupplierVoid drawers new EnumMap(Color. class ) {{ put(red, new SupplierVoid() { Override public void get();}); put(green, new SupplierVoid() { Override public void get();}) put(blue, new SupplierVoid() { Override public void get();}) }} 该映射的用法与上一个示例非常相似 drawers.get(color).get(); 该地图可以与存储以下实例的地图完全一样地进行验证 可绘制。 结论 本文显示了如果我们在其中添加一些逻辑那么Java enums有多么强大。 它还演示了两种扩展语言enums功能的方法尽管存在语言限制。 本文向用户介绍了名为enumus的开放源代码库该库提供了一些有用的实用程序可帮助更轻松地操作enums 。 翻译自: https://www.javacodegeeks.com/2019/03/two-ways-extend-enum-functionality.html

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

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

相关文章

工信部网站备案流程网站管理强化阵地建设

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

建设网站需要的资金清单咨询公司的成本费用有哪些

一、前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和…

响应式网站怎么样深圳市手机网站建设企业

覆盖索引:查询使用了索引,并且需要返回的列,在索引里面都可以找到,减少select*的使用 1、using index condition Extra 为using index condition 表明查找使用了索引,但是需要回表查询(也就是先二级索引&…

建设网站的一般过程中信建设有限责任公司 电话

导言 生成式 AI 正在改变企业的运作方式,并加快创新的步伐。总体而言,人工智能正在改变企业利用技术的方式。生成式 AI 技术包括微调和部署大型语言模型(LLM),并允许开发人员访问这些模型以执行提示和对话。负责在 Kub…

怎样用电脑做网站四川网站营销seo什么价格

文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成…

WordPress插件Discuz企业网站seo模板

看网上的 win R 然后终端输入什么删除的,照做了都没有删掉 有火绒的可以试试: 拖进去就删掉了 很好使

专业邯郸做网站ftp 转 wordpress

1.打开终端,输入: sudo apt-get updata 输入root用户密码 2.更新完毕后,输入 sudo apt-get install mysql-server ubuntu14.04安装中间会让你设置密码,输入密码后点击确认(mysql123) 3.安装结束后,查看端口号是否开启 …

珠海网站搜索引擎优化app推广渠道有哪些

如果循环条件满足的时候,则程序会一直执行下去。如果需要强制跳出循环,则需要使用跳转语句来完成。PHP8的跳转语句包括break语句、continue语句和goto语句。 1、break语句 break语句的作用是完全终止循环,包括while、do…while、for、switch…

新乡专业做淘宝网站百度做app的网站

什么是物联网智能控制器? 物联网智能控制器是蜂窝物联自主研发的一种远程测控设备(RTU),负责对现场信号、工业设备的监测和控制。本质上是一个模块化封装的微型计算机设备,将相应的一些功能进行了封装,无需进行电路设计和硬件程序…

电商网站设计的企业网址大全hao123

安装office时,提示某项注册表无法写入,请查看是否有管理员权限 大概就是这个意思,记不清楚了,解决办法: 首先如果你确认软件没有问题并且是用管理员帐户登录的话,请关闭防火墙与杀毒软件,重试&a…

如何去做一个网站网站建设西街

JUnit中的断言(Assert)有哪些类型? JUnit提供了多种断言类型来帮助测试代码的正确性。常见的断言类型包括: 1、assertEquals: 用于检查两个值是否相等。如果不相等,测试失败。 2、assertTrue和assertFal…

企业网站设计建设长春网站布局如何修改

收藏 难度:简单 标签:暂无标签 题目描述 孩纸,珍惜吧!这可能会是有史以来最简单的题目了、 有这样的函数F(i)i*i*i*i3*i*i*i2*i*i8*i9;请你找出他所有的整数函数值。 嘻嘻,不是这么的难题 !…

无锡网站建设网网络营销推广部做什么

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…

青岛做公司网站企业网站设计的重要性

今天给大家介绍IDEA开发工具如何配置devtools热加载工具。1、devtools原理介绍spring-boot-devtools是spring为开发者提供的热加载工具包。主要原理是使用了两个ClassLoader类加载器,一个Classloader加载那些不会改变的类(第三方Jar包)&#…

网站备案 不关站wordpress配置发信

项目地址:https://github.com/leVirve/lsun-room/tree/master 发表时间:2018 icpr 场景理解,在现实交互的众多方面中,因其在增强现实(AR)等应用中的相关性而得到广泛关注。场景理解可以分为几个子任务&…

网站程序 制作网站建设需求说明书怎么写

Problem: 167. 两数之和 II - 输入有序数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义左、右指针left、right分别指向数组索引为0和索引为nums.length - 1,定义结果数组int[] res new int[2]用于存储索引; 2.查找:当判断numbers[left] nu…

网站建设推广专家吉林企业建站系统费用

35.如图所示,SWA、SWB、SWC都运行RSTP,SWB上的GEO/O/2端口和SWC上的GEO/0/1端其端口角色为? A.backup端口.Alternative端口 B.Alternative端口、Backup端口 C.Root端口、Designate端口 D.Backup端口、Root端口 答案:A 注释: 一个链路(冲突域…

网站建设与推广协议万网服务器

前言: 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设计视频教程》,视频地址:Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设…

电力公司在哪个网站做推广最好小程序网址链接提取

pytorch_car_caring 排坑记录 任务踩坑回顾简单环境问题代码版本问题症状描述解决方法 cuda问题(异步问题)症状描述解决方法 任务 因为之前那个MPC代码跑出来的效果不理想,看了一天代码,大概看明白了,但要做改进还要有…

域外网站系统定制开发

为了响应国家号召、推动分布式存储技术落地、防御行业风险,中国分布式存储产业联盟启动,全国从事IPFS以及分布式存储从业者对行业风险及联盟成立的必要性达成了高度共识,目前有36家以上的IPFS分布式存储行业企业填写了联盟申请表。几位国内知…