只是从 Java 切换到 Kotlin。有一个问题,不幸的是,我找不到答案。有一些带有几个抽象变量的抽象类,然后将进行数十次测试。使用 JUnit 进行测试。方法被注释@BeforeClass并且@AfterClass必须是静态的,我只看到一种解决差距的方法:companion object在你可以使用的地方推送方法@JvmStatic,但同时,在方法中调用一个抽象变量@BeforeClass,由每个实现单独设置。因此,如何从外部类访问变量?或者也许有另一种方法可以解决这个问题?编码:
abstract class TemplateConfig {
abstract val template : String?
companion object {
lateinit var h: Handle
@BeforeClass
@JvmStatic
fun setUp() {
h = dbi.value.open()
//Здесь используется абстрактная переменная
//
//if (template != null) {
// h.createStatement(template).execute()
//}
}
@AfterClass
@JvmStatic
fun tearDown() {
h.close()
}
//{...Объявление и инициализация других переменных...}
}
}
如果我理解正确,您正试图在子类中设置的静态方法中引用非静态变量/方法。那行不通的。我看到的唯一解决方案是将字段定义为静态的,并在初始化子类时为其设置值。