我最近一直在研究静态编程语言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。
一个更简单的解决方案是:在“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
}
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表达式(这是此处的简短写法)作为属性提供程序函数时,结果将比较值本身。这工作时,要比较的对象有一个 自然秩序 的了。 所以 与…相同 尽管后者更有效,因为它对于具有自然顺序的所有类型都实现为单例(和实现)。 根本