Kotlin如何将val作为java类的关键字

在Kotlin中,他们引入了一个关键字val ,它可以与Java(我们可以从Java访问函数和成员,反之亦然)互操作。

在Java中没有关键字val ,如果我的代码在Java中看起来像这样

 class Myclass{ int val =10; //here val is variable name } 

如果我把这一个通过Kotlin类,如何被采取?

根据文档 , 如果你的Java标识符是Kotlin中的一个关键字,那么如果你用反引号把它包装起来你仍然可以在Kotlin中使用它。

例如,如果你有这样的Java:

 public class JavaClass { public static int val = 3; } 

您可以通过以下方式在Kotlin中访问它:

 fun main(args: Array<String>) { println(JavaClass.`val`) // prints 3 } 

编辑(v2):

怎么样从kotlin到java在这里java是严格键入lang,它如何考虑kotlin val关键字

如果您的Kotlin标识符是Java关键字 ,那么您可能会遇到麻烦。

对于方法, 可以在Kotlin中使用 @JvmName("other-name") 注释来覆盖方法名称。

科特林:

 class KotlinClass { @JvmName("otherName") fun new() { // ... } } 

Java的:

 public static void main(String[] args) { KotlinClass.otherName(); } 

但是对于领域,AFAIK没有由Kotlin或Java提供的解决方案。

最好不要在程序中使用Kotlin关键字,也不要使用Java关键字。


编辑(v1):(误解了第二个问题,一般写了关于如何在Java中使用Kotlin字段)

Kotlin属性将被视为Java中的getter和setter方法。 用val声明的属性只有一个getter。 如果将@JvmField添加到Kotlin属性,则可以直接访问该字段。 ( val将如预期的那样是最终的)。

科特林:

 class KotlinClass { val a = 1 var b = 2 @JvmField val c = 3 @JvmField var d = 4 } 

Java的:

 public static void main(String[] args) { KotlinClass o = new KotlinClass(); o.getA(); // 1 // o.setA(1); // not exists o.getB(); // 2 o.setB(1); oc; // 3 o.getC(); // 3 // oc = 1; // compile error // o.setC(1); // not exists od; // 4 o.getD(); // 4 od; = 4 o.setD(1); }