【问题标题】:How to get Class with type param如何使用类型参数获取类
【发布时间】:2019-06-30 12:00:11
【问题描述】:

我正在尝试上课>。

为了模拟观察者,我需要它的类。 我尝试过使用Observer<Int>::class.java,但得到“类文字左侧只允许使用类”

MWE(第 1-2 行是重要的,包括域逻辑和模拟验证以确保完整性):

val clazz = Observer<Int>::class.java  // Error
val observer: Observer<Int> = mock(clazz)

addObserver(observer)
val y = 1
setObservedValue(y)


verify(observer).onChanged(y)

【问题讨论】:

    标签: kotlin mockito


    【解决方案1】:

    只有一个Observer::class,它不依赖于类型参数。所以你可以写

    @Suppress("UNCHECKED_CAST")
    val clazz = Observer::class.java as Class<Observer<Int>>
    

    或者,如果您不止一次遇到这种情况(很可能)

    inline fun <reified T> mock(): T = mock(T::class.java)
    

    称为

    val observer = mock<Observer<Int>>()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多