class EnumUtils(
@Value("\${open-date}")
lateinit var openDateYmd: String
) {
companion object{
fun getStatus(orderDate: LocalDateTime): Status {
val openDateLocalDateTime = parseToLocalDateTime(**openDateYmd**)
return when {
orderDate.isBefore(openDateLocalDateTime) -> Status.VALUE_1
else -> Status.VALUE_1
}
}
}
}
这是我的代码。我想在同伴对象中使用openDateYmd变量。(具体来说,我想在parseToLocalDateTime函数中使用它。)
openDateYmd是yaml的变量之一。
如何使用它?
2条答案
按热度按时间7dl7o3gd1#
(我假设你正在使用Spring,因为你提到了YAML和
@Value
。如何使用它?
不,你不能(或至少不容易 *)-错误的范围。
如果你熟悉Java,同伴对象就像一个
static
,@Value
注解了一个类示例变量。您可以将
class EnumUtils
更改为单例类object EnumUtils
,这是您通常为Utility类所做的,在那里您不需要有特定的示例,但这 * 不会解决您的问题 *,因为Spring希望为您创建示例(即使它本质上创建了一个单例)。看起来你需要参数化你的工具。你需要避免同伴对象或对象类,坚持使用Spring管理的常规类,然后将其注入到调用站点。
bxpogfeg2#
为了在Android类的伴随对象中使用带@Value注解的变量,您需要确保将变量声明为包含类的属性,而不是伴随对象本身。
下面是一个示例,说明如何在伴随对象中使用带@Value注解的变量:
在本例中,myValue被声明为MyActivity的属性,并使用@Value进行注解。lateinit关键字用于指示该属性将在稍后进行初始化。
doSomethingStatic函数在MyActivity的伴随对象中声明,并且可以通过包含类的示例访问myValue属性。请注意,您不能直接从伴随对象访问myValue属性,因为它不是静态属性。