PHondogo
05/10/2020, 9:53 PMabstract class TestBase<T> {
suspend fun test(value: T) {
println(doTest(value))
}
protected abstract suspend fun doTest(value: T): T
}
class TestInherit : TestBase<String>() {
override suspend fun doTest(value: String): String {
return value + "/" + value
}
}
@Test
fun test() {
runBlocking {
TestInherit().test("aaa") /* throws exception here java.lang.AbstractMethodError: Receiver class TestInherit does not define or inherit an implementation of the resolved method 'abstract java.lang.Object doTest(java.lang.Object, kotlin.coroutines.Continuation)' of abstract class TestBase. */
}
}
If define TestBase without generic it works ok.
abstract class TestBase {
suspend fun test(value: String) {
println(doTest(value))
}
protected abstract suspend fun doTest(value: String): String
}
class TestInherit : TestBase() {
override suspend fun doTest(value: String): String {
return value + "/" + value
}
}
@Test
fun test() {
runBlocking {
TestInherit().test("aaa") // OK
}
}
turansky
05/10/2020, 10:35 PMtest
located in class?PHondogo
05/11/2020, 10:48 AM