Java 的接口优势

2023-11-22

我的问题很简单:如果接口由单个类实现,那么使用接口有什么优势吗?
我一直认为只有当接口有多个实现时,接口才是好的。

Thanks.


一句话:不。接口所表示的契约可以直接在您唯一的类中指定。

如果您清楚将来不需要相同方法的另一个实现,则可以避免定义接口。

当然,这里的问题是“将来”条款。如果项目规模较小,开发/升级周期不长,并且定义明确,那么您几乎可以确定将来需要什么。

如果项目很长并且可能会发生变化,那么您将必须考虑:

  • 您最终需要一个界面的可能性。
  • 您现在可能知道该接口将来需要什么方法。
  • 现在做接口的成本与未来重构的成本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 的接口优势 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 通过 SQLLDR 将多个 csv 加载到一张表中

    我正在使用 SQL LOADER 在一个表中加载多个 csv 文件 我发现的过程非常简单 LOAD DATA INFILE path file1 csv INFILE path file2 csv INFILE path file3 csv
  • 依赖类型不适用于构造函数?

    路径相关类型很有用 trait Sys type Global def foo S lt Sys system S global system Global 为什么这对构造函数不起作用 class Foo S lt Sys val syst
  • 如何从文本图像OpenCV中去除非直线对角线?

    我有一个包含文本的图像 但上面绘制了非直线 我想删除这些行而不影响 删除文本中的任何内容 为此 我使用了霍夫概率变换 import cv2 import numpy as np def remove lines filename img c
  • 如何将 foreach 转换为 Parallel.ForEach?

    如何转换 foreach NotifyCollectionChangedEventHandler handler in delegates 对于这样的事情 Parallel ForEach NotifyCollectionChangedEv
  • 如何计算android中每个应用程序的移动和wifi数据使用情况?

    有没有可能使用 TrafficStats getUidRxBytes getUidTxBytes getTotalRxbytes getTotalTXbytes getMobileRxBytes getMobileTxBytes 方法来计算
  • 为什么 return/redo 在调用上下文中评估结果函数,但不评估块结果?

    昨晚我了解了 redo 选项 当你return来自一个函数 它可以让你回来another函数 然后在调用站点调用该函数并从同一位置重新调用评估器 gt gt foo func a print a return redo func b pri
  • ExpressJS 路由正则表达式

    我有路线 app get id routes action 它工作正常 但我需要跳过robot txt和其他 人类 我创建正则表达式 仅字符或数字 a z 0 10 我如何才能仅路由与此正则表达式匹配的 id 将正则表达式放在括号中 如下所
  • MySql批量插入

    我想在 MySql 数据库中插入一些 4K 行 我不想触发 4k 插入 查询 有什么方法可以让我只触发一个插入查询来将这些 4k 行存储在数据库中 我在互联网上搜索 发现用户正在从文件批量插入数据库 就我而言 我的数据位于内存中 并且我不想
  • 在 Mac (Yosemite) 上使用 phantomjs#2.0.0 运行 casperjs 时出现问题

    我正在尝试奔跑CasperJS having PhantomJS 2 0 0 on a Mac 优胜美地 当尝试跑步时CasperJS我收到以下消息 CasperJS needs PhantomJS v1 x usr local Cella
  • Android 设备上的低功耗蓝牙 RSSI 会定期更改

    我注意到 Android 上接收到的低功耗蓝牙信号强度随周期变化 下图表示一个 BLE 信标在两分钟内的 RSSI 值 接收机器人和信标均处于静止状态 距离均为 1 米 我确保干扰尽可能低 Android 是 Nexus 5 但我在其他 A
  • 使用 jQuery 最小化/最大化 div

    我基本上想最小化一些 div 我不想使用 和 而是想使用一些符号 来自 font awesome 来最小化和最大化 div 我对此的问题 如何在这段代码中插入图标 的类 我尝试用 attr 替换 html 部分 但这没有成功 多谢 Upda
  • 如何在 OnCompleteListener Firebase 中使用异步/等待/协程

    我正在构建一个客户端应用程序 它使用 Firebase 来做两件事 用户认证 使用实时数据库 我已成功在客户端和后端服务器上正确设置所有内容 使用 Firebase 的 Admin SDK 并且能够正确验证用户身份并允许他们读取 写入数据库
  • 哪些代码控制 WPF 应用程序的启动?

    更具体地说 我怎样才能设置像这样的启动顺序在 WPF 中 启动时不显示窗口 但存在通知图标 要运行 WPF 需要Application目的 当你执行时Run在该对象上 应用程序进入无限循环 事件循环负责处理用户输入和任何其他操作系统信号 换
  • 为什么运行一次(并且从未加载)的 Meteor 应用程序的数据库占用了近 3GB?

    UPDATE 这个问题在 Meteor v0 4 2012 之后得到了修复 出于历史目的 摘自du 2890768 Code Meteor QuarterTo meteor local db journal 2890772 Code Met
  • Dask read_csv 失败,而 pandas 则失败

    尝试使用 dask 的read csv在文件中 pandas 的位置read csv像这样 dd read csv data ecommerce new csv 失败并出现以下错误 pandas errors ParserError Err
  • 使用子类对象访问超类函数

    我有一个扩展其超类的子类对象 子类中有一个重写的方法 可以使用该对象调用 是否可以使用子类对象调用超类的函数 package supercall public class Main public static void main Strin
  • 如何编写可以运行 x86 十六进制代码的 C 程序

    我有一组十六进制代码 可以转换为汇编指令 我想用 C 语言创建可以执行这些指令的程序 unsigned char rawData 5356 0x4C 0x01 0x0A 0x00 0x00 0x00 0x00 0x00 0x64 0x0C
  • 如何在 php 中从 .doc 模板创建 word .doc 文件

    我需要从Word模板创建一个Word文档 就像我们需要用值替换模板中的几个字符串 比如变量 请告诉我们如何在 PHP 或 cakePHP 中做到这一点 我建议查看 phpLiveDocx http www phplivedocx org 还
  • 存储指令是否会在缓存未命中时阻塞后续指令?

    假设我们有一个具有两个核心 C0 和 C1 的处理器和一个从地址开始的高速缓存行k最初由 C0 拥有 如果 C1 在第 8 行的 8 字节槽上发出存储指令k 这会影响 C1 上执行的以下指令的吞吐量吗 intel优化手册有如下一段 当指令将
  • Java 的接口优势

    我的问题很简单 如果接口由单个类实现 那么使用接口有什么优势吗 我一直认为只有当接口有多个实现时 接口才是好的 Thanks 一句话 不 接口所表示的契约可以直接在您唯一的类中指定 如果您清楚将来不需要相同方法的另一个实现 则可以避免定义接