Tôi thường có điều này trong Java:const tĩnh trong Kotlin từ Java tên lớp
package some.package;
public class Clz {
public static final String ACTION_DIVE = Clz.class.getName() + ".action.DIVE";
}
có thể truy cập từ bên ngoài lớp học mà như Clz.ACTION_DIVE
và giá trị sẽ "some.package.Clz.action.DIVE"
.
Làm cách nào tôi có thể thực hiện tương tự trong lớp Kotlin Clz
để có thể truy cập nó theo cách tương tự từ các lớp Java bên ngoài? Tôi đã thử các sau đây nhưng nó không biên dịch vì nó không phải là một hằng số:
package some.package
object Clz {
const val ACTION_DIVE = Clz.javaClass.name + ".action.DIVE"
}
Không làm việc. 'const val ACTION_DIVE = Clz :: class.java.name +" .action.DIVE "' Lỗi là: 'Const val initializer phải là một giá trị không đổi' – yuku
Sử dụng '@ JvmField' thay vì' const' ('const' chỉ dành cho các hằng số biên dịch): https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-fields –
Tôi đoán là vậy. @JvmField. Cảm ơn! – yuku