当前位置: 首页 > 知识库问答 >
问题:

在接口中创建私有方法的正确方法

盖弘毅
2023-03-14

我正在处理一个数据库,我用AutoCloseabe的extends创建了一个名为Dao的公共接口,所以我有一个实现这个接口的类,但我想在那里创建一些私有方法,但它们仍然需要Autocloseable。所以我的问题是,我不能在接口中创建私有方法而不在接口中定义它们。如果我在类中创建一个私有方法,但不从DAO重写,就会发生这种情况?他们不会有自动关闭的,是吗?。如果没有,我可以实现哪种解决方案

共有1个答案

荀俊迈
2023-03-14

在Java9中引入接口中的私有方法背后的动机与在任何其他类体中使用私有方法的原因相同。它允许您将代码分解为不继承的可重用、可管理的方法:

default public boolean tryHeads() {
    return flip();
}

default public boolean tryTails() {
    return !flip();
}

private boolean flip() {
    return ThreadLocalRandom.current().nextBoolean();
}

这实在是过于简单化了。但请看我的一个类似问题以获得更多的见解。

 类似资料:
  • 在java 8之前,接口可以有以下类型的变量/方法。 常量变量 抽象方法 所以我们不能在接口中编写方法的实现,或者更确切地说,在Java 8之前实现默认实现。请参阅下面示例。 执行上面示例代码,得到以下结果 - 在上面的例子中,每个日志方法都有自己的实现。 使用Java 8接口可以有以下类型的变量/方法。 常量变量 抽象方法 默认方法 静态方法 让我们使用Java 8在接口中使用默认实现和静态方法

  • 我尝试在Spring Boot应用程序中配置apache kafka。我阅读了这篇文档,并按照以下步骤操作: 1)我将以下行添加到: 2)我创建新主题:

  • Q.如果您在未链接到接口的抽象类中创建抽象方法,您是否仍然遵循编程到接口的原则? 我已经为我创建的所有UI类使用了接口;但是,考虑到接口的原因,我看不到与我想要创建的抽象方法和已经存在的接口的直接关联。 通常,我只会创建抽象方法并完成;但是,我想知道我是否违反了程序到接口的设计原则。 问:我应该为此创建另一个接口,还是继续使用抽象方法? 注意:这不是一个接口与抽象类的问题。 注意:我的基类更多的是

  • 问题内容: 考虑下面的类层次结构。 运行该程序将出现以下错误: 这是因为我将ClassA.hello标记为私有。 如果我将ClassA.hello标记为受保护或删除了可见性修饰符(即使其成为默认作用域),那么它将显示编译器错误为: 但是,按照上面的异常stacktrace, 我得到一个运行时IllegalAccessError。 我不明白为什么在编译时没有检测到这个。有什么线索吗? 问题答案: 更

  • 我想了3种方法来创建一个命令并执行它。 每个命令都有不同方法。IE: 或者3)像第二个but一样,方法作为参数but接收,拆分为 这样做的正确方法是什么?由于某种原因,第三个看起来不对,但我不知道为什么。

  • 我正在尝试构建一个通过Lettuce与redis通信的Denodo java存储过程。 我正在使用Denodo 4e eclipse extension和Denodo推荐的oxygen。 我显然遗漏了一些东西,因为所有的文档都表明 而且 抛出的错误被调试方法所掩盖,我所知道的是,在第一个实例中,构建器失败,在第二个实例中,客户端失败。 当我调用redis-cli时,我看到redis正在以127.0