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

在java开关表达式中使用kotlin常量

张永嘉
2023-03-14

我最近一直在研究静态编程语言lang及其与java的互操作。我有以下java代码:

public void select(int code) {
    switch code {
        case Service.CONSTANT_ONE:
            break;
        case Service.CONSTANT_TWO:
             break;
        default:
             break;
    }
}

其中Service.kt编写如下:

class Service {
    companion object {
        val CONSTANT_ONE = 1
        val CONSTANT_TWO = 2
    }
}

Java编译器说常数1和常数2必须是常数,但我不知道如何使它们比现在更恒定。所以我的问题是:如何在java swicth语句中使用kotlin中的常量?

我用的是jdk8和kotlin M14。

共有2个答案

卫深
2023-03-14

一个更简单的解决方案是:在“Kotlin文件”中声明常量,而不是在“Kotlin类”中声明常量,这基本上是在类范围之外声明常量,可以通过适当的导入在任何地方引用它们。

const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2

class Service {
}

或者如果你想要类似于private static final int CONSTANT_ONE=1

可以在Kotlin文件中将常量声明为私有,并且只有同一文件中的类才能访问它。

private const val CONSTANT_ONE = 1
class A{
   // can access CONSTANT_ONE
}

class B{
  // can access CONSTANT_ONE
}

陶胤运
2023-03-14

M14更改状态"由于M14,我们需要给静态编程语言常量加上常量前缀,以便能够在注释中使用它们,并将其视为Java中的字段"

class Service {
    companion object {
        const val CONSTANT_ONE = 1
        const val CONSTANT_TWO = 2
    }
}

IntelliJ仍然向我展示了Java情况下的错误,但它编译并工作。

 类似资料:
  • 问题内容: 似乎我的正则表达式已关闭或我在案例陈述中没有正确使用它。我想要的是一个字符串:以一个大写字母开头,然后以两个小写字母开头,后跟至少一个数字。 我已经检查了regex API,并尝试了三种变体(贪婪的,勉强的和所有格的量词),却不知道它们的正确用法。还检查了String方法,但没有找到与我的需求相关的方法。 问题答案: 您不能将正则表达式用作开关盒。(考虑一下:Java如何知道您要匹配字

  • 静态编程语言允许注释表达式。然而,尚不清楚这些注释如何有用以及如何使用它们。 假设在下面的示例中,我想检查一下,该字符串包含@MyExpr注释中指定的数字。这能实现吗?如何实现?

  • 本文向大家介绍java常用正则表达式,包括了java常用正则表达式的使用技巧和注意事项,需要的朋友参考一下   "^/d+$"   //非负整数(正整数 + 0)   "^[0-9]*[1-9][0-9]*$"   //正整数   "^((-/d+)|(0+))$"   //非正整数(负整数 + 0)   "^-[0-9]*[1-9][0-9]*$"   //负整数   "^-?/d+$"    

  • 我正在使用Spring MVC,我正在尝试编写一个每小时运行一次的计划任务。问题是,当应用程序启动时,它应该计算到下一个小时的持续时间,并将该值用作初始延迟。这样,计划的任务可以在精确的时间运行,比如下午1点。。。下午2点。。。下午三点等等。 在下面的代码中,我试图计算@PostConstruct注释中的初始延迟。但是,当我尝试在@Sched的注释中使用变量时,会收到以下错误消息:注释属性Sche

  • 我不断地得到错误 在终端上编译时。 在switch语句的末尾。这是在用终端编译的时候。

  • 问题内容: 这是我的代码 输出: 我无法在我的代码的以下部分中区分两者 有人能和be并解释两者的区别吗? 问题答案: 该方法旨在创建一个使用基于对象属性的订单进行比较的。当使用lambda表达式(这是此处的简短写法)作为属性提供程序函数时,结果将比较值本身。这工作时,要比较的对象有一个 自然秩序 的了。 所以 与…相同 尽管后者更有效,因为它对于具有自然顺序的所有类型都实现为单例(和实现)。 根本