当前位置: 首页 > news >正文

不同jdk版本中的接口规范

Java Development Kit(JDK)的每个版本通常会对 Java 语言和类库进行改进,接口规范也在不断演进。Java 接口的演变是逐步从 “纯粹抽象的定义” 向 “具有行为的抽象定义” 演化的。

      • JDK 1.0 和 JDK 1.1
      • JDK 1.2 到 JDK 1.6
      • JDK 1.8(Java 8)
      • JDK 9
      • JDK 17(Java 17)

JDK 1.0 和 JDK 1.1

  • 接口的引入: JDK 1.0 中首次引入了接口的概念,它是 Java 语言区别于 C++ 等其他语言的重要特性。接口用于定义一组抽象方法,这些方法必须在实现接口的类中得到实现。
  • 基本概念: 接口定义了一组不能带有实现体的抽象方法,所有这些方法都默认为publicabstract。接口还可以定义public static final类型的常量。

JDK 1.2 到 JDK 1.6

  • 接口作为 Java API的扩展方式: 在这些版本中,接口逐渐被大量使用来构建 Java API,例如java.util.Collection等接口被定义出来,以允许程序员在不同的类中共享行为特征。
  • 没有默认实现: 在这些版本中,接口中只能定义抽象方法,没有任何方法可以有实现。也就是说,接口只定义 “做什么”,实现类必须负责 “怎么做”。

JDK 1.8(Java 8)

Java 8 是 Java 语言中一个重要的里程碑版本,因为它引入了若干改变接口规范的新特性,使得接口在 Java 中的角色更加丰富和灵活。

  • 默认方法(Default Methods):

    • Java 8 允许在接口中定义 “默认方法”(default),也就是接口可以为某些方法提供默认的实现。
    • 这种方式的引入解决了接口扩展时的一个难题:在不破坏现有接口实现的情况下为接口新增功能。通过使用default关键字,接口中的一些方法可以有默认的实现,不强制所有实现类都实现该方法。例如:
      public interface MyInterface {default void defaultMethod() {System.out.println("This is a default method.");}
      }
      
    • 默认方法使得接口中的代码重用变得可能,同时减少了实现类的负担。
  • 静态方法(Static Methods):

    • Java 8 还允许在接口中定义静态方法,这些静态方法只能在接口级别被调用,不能在实现类中被覆盖或继承。例如:

      public interface MyInterface {static void staticMethod() {System.out.println("This is a static method.");}
      }
      

JDK 9

Java 9 进一步扩展了接口规范,尤其在模块化编程和接口封装方面有了一些增强。

  • 私有方法(Private Methods):
    • Java 9 允许在接口中定义私有方法。私有方法的引入是为了简化接口代码的重用,帮助将通用的逻辑提取到接口的内部,以减少重复代码。
    • 私有方法既可以是实例方法,也可以是静态方法。它们不能被实现类访问,只能在接口中用于辅助defaultstatic方法。例如:
      public interface MyInterface {default void publicDefaultMethod() {privateHelperMethod();}private void privateHelperMethod() {System.out.println("This is a private helper method.");}
      }
      

JDK 17(Java 17)

Java 17 是一个长期支持(LTS)版本,它在接口和类的封装方面引入了一些进一步的增强:

  • 封闭接口(Sealed Interfaces):
    • Java 17 引入了封闭类和封闭接口(sealed)。封闭接口可以限制哪些类可以实现该接口,提供了一种控制继承结构的机制。
    • 使用封闭接口的关键字为sealed,并且可以结合permits关键字来指定允许实现该接口的类。例如:
      public sealed interface MyInterface permits ClassA, ClassB {void doSomething();
      }
      
    • 这种机制增强了接口的安全性和可维护性,尤其适用于需要更严格控制实现结构的场景。

相关文章:

不同jdk版本中的接口规范

Java Development Kit(JDK)的每个版本通常会对 Java 语言和类库进行改进,接口规范也在不断演进。Java 接口的演变是逐步从 “纯粹抽象的定义” 向 “具有行为的抽象定义” 演化的。 JDK 1.0 和 JDK 1.1JDK 1.2 到 JDK 1.6JDK 1.8(…...

人工智能图像信号处理器(AI ISP)技术介绍

随着智能设备和数码成像技术的快速发展,图像质量的提升成为用户体验的关键因素之一。人工智能图像信号处理器(AI Image Signal Processor,AI ISP) 作为传统图像信号处理器(ISP)的升级版,通过集成…...

3D Slicer 教程三 ---- 坐标系

上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS(左、后、上)坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻…...

Video-LLaMA论文解读和项目部署教程

Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding 相关工作 大型语言模型: 本文的工作基于这些LLM,并提供即插即用插件,使其能够理解视频中的视觉和听觉内容。 多模态大型语言模型: 现有…...

Elasticsearch设置 X-Pack认证,设置账号和密码

前言 以下Elasticsearch版本:7.9.3 ES自带的X-Pack密码验证: X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证…...

机器学习——量子机器学习(Quantum Machine Learning)

机器学习——量子机器学习(Quantum Machine Learning) 量子机器学习(Quantum Machine Learning)——未来的智能计算量子机器学习的核心概念使用Qiskit进行量子机器学习——代码示例代码解析量子机器学习的应用结论 量子机器学习&a…...

Android Studio 的 Gradle 任务列表只显示测试任务

问题现象如下: 问题原因: 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法: File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…...

Keepalived:高可用性的守护神

Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…...

Golang笔记_day08

Go面试题(一) 1、空切片 和 nil 切片 区别 空切片: 空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:…...

如何在 React 中更新状态对象的某个值

在 React 中,我们经常需要更新组件的状态来反映 UI 的变化。如果状态是一个复杂的对象,比如一个包含多个筛选条件的对象,我们希望只更新其中的某个键,而不是整个状态对象。今天,我将向大家展示如何在更新状态时保留已有…...

edge浏览器:你的连接不是专用连接

最近在使用edge浏览器打开github时,发现打不开了,提升你的连接不是专用连接。试了很多种方法甚至重装了浏览器,都没有用。 直到看到了这篇文章,才得到解决: 10 个修复此站点在 Windows Edge 上的连接不安全的问题htt…...

PDF 软件如何帮助您编辑、转换和保护文件

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的…...

如何使用Java爬虫处理API接口返回的JSON数据?

处理API接口返回的JSON数据是Java爬虫开发中的一个常见任务。在Java中,有多个库可以帮助我们解析JSON数据,其中最流行的是Jackson和Gson。以下是使用这两个库处理JSON数据的基本步骤和示例代码。 使用Jackson处理JSON Jackson是一个功能强大的JSON处理…...

Ajax是什么?

Ajax是什么? Ajax是创建交互式网页应用的网页开发技术。简单来说就是网页在不加载的情况下,可以跟服务器交换数据,并更新页面的内容。 原理: 1. 创建xhr(xmlHttpRequest)对象; 2, 通过xhr对象的open()方法和…...

技术方向简介

掌握 Java基础,包括OOP思想、集合、常用的设计模式;熟悉基本的数据结构和算法; 掌握JVM虚拟机和Java多线程并发编程,熟悉线程池、线程安全机制、锁的使用; 熟悉MySQL、Oracle等关系型数据库锁、事务、索引相关知识,了解DDL原理&…...

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…...

web APIs

目录 Web APIs第一天Dom获取&属性操作Web API基本认知变量声明作用和分类什么是DOMDOM树DOM对象 获取Dom对象根据CSS选择器来获取DOM元素(重点)其他获取DOM元素方法(了解) 操作元素内容对象.innerText 属性对象.innerHTML 属性…...

【Web前端概述】

HTML 是用来描述网页的一种语言,全称是 Hyper-Text Markup Language,即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素,它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月:一个非正式…...

文献阅读:一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准工具

::: block-1 文献介绍 文献题目: AllenDigger,一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准的工具 研究团队: 王晓群(北京师范大学) 发表时间: 2023-03-16 发表期刊&#xff1a…...

Redis学习笔记(三)--Redis客户端

文章目录 一、命令行客户端二、图形界面客户端1、Redis Desktop Manager2、RedisPlus 三、java代码客户端 本文参考: Redis学习汇总(已完结) Redis超详细入门教程(基础篇) Redis视频从入门到高级,redis视频…...

OpenClaw+千问3.5-9B数据清洗:Excel表格异常值检测与修复

OpenClaw千问3.5-9B数据清洗:Excel表格异常值检测与修复 1. 为什么需要AI辅助数据清洗? 上周处理一份客户调研数据时,我遇到了典型的数据清洗难题——表格里混杂着空值、格式混乱的日期、重复记录和错误拼写。手动处理不仅耗时,…...

场效应管MOS

场效应管 场效应管又称场效应晶体管(Field Effect Transistor,缩写为FET),它与三极管一样,具有放大能力。场效应管有漏极(D极)、栅极(G极)和源极(S极&#xf…...

打造行业大模型更好还是做垂直 Agent 更好

打造行业大模型更好还是做垂直 Agent 更好?从小学生的糖果王国管理谈起,拆解AI落地的终极选择题关键词:行业大模型、垂直 Agent、AI落地、通用 vs 垂直、能力边界、ROI模型、端云协同、大模型Agent架构摘要:这篇文章从「小学生管理…...

Flutter 微交互:细节中的用户体验魔法

Flutter 微交互:细节中的用户体验魔法小细节,大体验。微交互让应用更有生命力。一、什么是微交互? 作为一名追求像素级还原的 UI 匠人,我深知微交互的力量。它们是用户与界面之间的微小对话——一个按钮的按下反馈、一个列表项的滑…...

OpenMMLab 环境配置实战:从 YOLO 项目报错到模块化开发的避坑指南

1. 从YOLO项目报错说起:OpenMMLab环境配置的典型痛点 最近在复现一个基于YOLOv5改进的OpenMMLab项目时,遇到了让人头疼的ModuleNotFoundError: No module named mmdet报错。这个场景太典型了——明明项目目录里清清楚楚躺着mmdet文件夹,Pytho…...

长远赋能——TVA系统助力汽车零部件企业智能化转型升级

「本文已用流量券推广,欢迎收藏 关注」在工业4.0浪潮推动下,智能化转型升级已成为汽车零部件企业实现高质量发展的必由之路,而质量检测作为生产环节的核心组成部分,其智能化水平直接决定了企业的转型升级成效。TVA高精度AI智能视…...

Magisk Alpha深度隐匿实战:从Momo检测到BL列表的终极配置

1. 为什么需要深度隐匿Root环境? 最近两年,银行类APP和游戏厂商的检测手段越来越严格。我去年用某银行APP时,明明Root已经隐藏得很好,结果转账时突然弹出"设备环境异常"的提示,直接中断交易。后来才知道是新…...

水下珍品目标检测数据集海胆(sea urchin),海参(sea cucumber),扇贝(scallop)总计796张图像,图像大小是1920×1080数据集是YOLO格式和VOC格式可直接

水下珍品目标检测数据集 海胆(sea urchin),海参(sea cucumber),扇贝(scallop) 总计796张图像,图像大小是19201080 数据集是YOLO格式和VOC格式 可直接进行YOLO检测,目前yolov5检测map高达0.91 图像是原始图像,未做清晰化…...

利用快马平台快速构建openclaw机械臂抓取仿真原型

最近在研究机器人抓取相关的项目,偶然发现了openclaw这个开源框架,它专注于机械臂的智能控制与物体抓取任务。作为一个刚入门机器人领域的开发者,我一直在寻找能够快速验证想法的工具。经过一番探索,我发现InsCode(快马)平台特别适…...

DownKyi:3个真实案例揭示如何高效解决B站视频下载难题

DownKyi:3个真实案例揭示如何高效解决B站视频下载难题 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#…...