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

如何在静态编程语言中为Java类添加静态方法

洪宇定
2023-03-14

是否可以在Kotlin中的java.lang.Mathclass中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。

我已经尝试在一个名为Extensions.kt的文件中执行以下操作:

fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double
{
    return Math.max(Math.min(value,maxValue),minValue)
}

但<code>数学。无法解析同伴。。。

共有3个答案

商兴朝
2023-03-14

从静态编程语言1.2开始,这仍然是不可能的。

作为一种解决方法,静态“扩展”我当前正在使用的环境类:

Class EnvironmentExtensions {
    companion object {
        @JvmStatic
        fun getSomething(): File {
            ...
            return Environment.something()
        }
    }
}

这不是一个理想的解决方案,但智能J /Android Studio代码完成有助于使用:

val something = EnvironmentExtensions.getSomething()
杜曜灿
2023-03-14

我认为这是不可能的。文档说明如下:

如果一个类定义了一个伴随对象,你也可以为这个伴随对象定义扩展函数和属性。

Math类是一个Java类,而不是静态编程语言类,并且其中没有伴随对象。您可以将clamp方法添加Double类中。

令狐声
2023-03-14

从Kotlin 1.3开始,这是不可能的。然而,它正在考虑将来发布!

为了帮助这项功能的实现,请投票支持这个问题:https://youtrack.jetbrains.com/issue/KT-11968

因为所有的提议现在基本上都处于不确定状态,我不会屏住呼吸说这会很快得到。

 类似资料:
  • 我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.