::class.java 的含义是什么

1 java android kotlin retrofit2

我正在尝试通过 Retrofit2 访问 Web api,所以我为此创建了一个构建器,其中我不明白这条线在做什么,我如何能够在其中传递我的接口

 val retrofitBuilder = Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(BASE_URL)
                .build()

                //meaning of this line
                **.create(ApiInterface::class.java)**
Run Code Online (Sandbox Code Playgroud)

这是界面

interface ApiInterface {

    @GET("users")
    fun getData():Call<List<FakeJsonDataItemItem>>

}
Run Code Online (Sandbox Code Playgroud)

我在里面传递什么?

Pra*_*ary 6

通过使用::class.java,您可以获得 Class 的一个实例。它是Java反射API。

如果你想获取 Java 类引用,你必须在 KClass 实例上使用 .java 属性:

val c = ExampleClass::class.java  // reference type of java
Run Code Online (Sandbox Code Playgroud)

通过使用::class,您可以获得 KClass 的一个实例。它是 Kotlin 反射 API。当我们使用如下所示的任何类类型创建对象时,引用类型将是 KClass 类型。

val c = ExampleClass::class  // reference type of KClass
Run Code Online (Sandbox Code Playgroud)

Retrofitcreate()方法在后台验证接口。之后,如果接口通过验证,则使用Retrofit创建API接口实例,从Retrofit返回的实例实际上是一个代理类,是该接口在运行时的动态实现。