英文:
Java to Kotlin constructor method
问题
以下是您要翻译的内容:
将我的服务的构造方法移动到 Kotlin 代码中时,我会收到“方法从未被使用”的消息。将下面的方法转移到 Kotlin 服务中的正确方法是什么?我认为可以使用 init 块,但我不太确定。
public CurrencyServiceImpl() {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS).build();
}
现在对于 Kotlin,下面的代码会报错“函数 'CurrencyServiceImpl' 从未被使用”。
fun CurrencyServiceImpl() {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS)
.build<String, String>()
}
因此,我将其更改为以下代码:
init {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS)
.build<String, String>()
}
但我不确定是否被视为“适当”。
英文:
When I move my service's constructor method to Kotlin code, I get a "Method is never used" message. What would be the correct way to transfer the below method to a Kotlin service? I think an init block could be used instead but I'm not sure.
public CurrencyServiceImpl() {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS).build();
}
Now for Kotlin, the below throws "Function "CurrencyServiceImpl" is never used"
fun CurrencyServiceImpl() {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS)
.build<String, String>()
}
So I changed it to the code below:
init {
currenciesCache = Caffeine.newBuilder().maximumSize(100).expireAfterWrite(1, TimeUnit.DAYS)
.build<String, String>()
}
But I am not sure if that is considered "appropriate".
答案1
得分: 4
你的初始化代码是完全适当的。
注意,你之前定义的 fun CurrencyServiceImpl()
并不是一个构造函数,而是一个成员函数,这就是为什么它没有被使用。在 Kotlin 中,构造函数必须使用 constructor
关键字声明。
英文:
Your init is perfectly appropriate.
Note that the fun CurrencyServiceImpl()
you defined before is not a constructor but a member function, hence why it wasn't being used. Constructors in Kotlin must be declared using the cosntructor
keyword.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论