在java中调用kotlin传递KClass
时间: 2024-01-21 12:17:37 浏览: 131
kotlin和Java的相互调用示例详解
在Java中调用 Kotlin 函数时,可以使用 `KClass` 类型引用 Kotlin 类。下面是一个简单的例子:
Kotlin 代码:
```kotlin
package com.example
class Person(val name: String, val age: Int)
fun printClassInfo(cls: KClass<*>) {
println("Class name: ${cls.simpleName}")
println("Package name: ${cls.java.`package`.name}")
}
```
Java 代码:
```java
import kotlin.reflect.KClass;
import com.example.Person;
public class Main {
public static void main(String[] args) {
KClass<Person> personClass = Person.class.asSubclass(Person.class);
printClassInfo(personClass);
}
public static void printClassInfo(KClass<?> cls) {
System.out.println("Class name: " + cls.getSimpleName());
System.out.println("Package name: " + cls.getJavaPackage().getName());
}
}
```
在这个例子中,我们定义了一个 `Person` 类和一个 `printClassInfo` 函数。`printClassInfo` 函数接受一个 `KClass` 参数并打印出类名和包名。
在 Java 中调用 Kotlin 函数时,我们可以使用 `asSubclass` 方法将 Kotlin 类型引用转换为 Java 类型引用。在这个例子中,我们将 `Person.class` 强制转换为 `Person.class` 类型,然后将其传递给 `printClassInfo` 函数。
阅读全文