In Java, to override method when instantiating new object we can do this

public ActivityTestRule<MainActivity> rule = new ActivityTestRule<MainActivity>(
            MainActivity.class) {
        @Override
        protected void beforeActivityLaunched() {
            // implement code
            super.beforeActivityLaunched();
        }
    };

在Kotlin 怎么做?我试过这段代码,但编译失败.

@Rule @JvmField
var rule = ActivityTestRule<MainActivity>(MainActivity::class.java) {
    override fun beforeActivityLaunched() {
        super.beforeActivityLaunched()
    }
} 

推荐答案

If you want to create anonymous inner class, you should use object.

var rule = object : ActivityTestRule<MainActivity>(MainActivity::class.java) {
    override fun beforeActivityLaunched() {
        super.beforeActivityLaunched()
    }
}

See also Object Expressions and Declarations.

Kotlin相关问答推荐

Kotlin -通过反射获得KProperty 1和CallableReference的实例

Kotlin -从列表中获取特定过滤器的唯一列表值

处理合成层次 struct 中的深层按钮以切换视图

在调用父构造函数之前重写类属性

如何优雅地声明一个StateFlow?

Criteria Api 中的 Kotlin 泛型

用于将 0.5 变为 0 的 round() 函数的模拟

JetPack Compose:添加点击持续时间

在 Kotlin 协程中切换 IO 和 UI 的正确方法是什么?

我什么时候可以在 LazyList 或 Column 的范围内使用 Composable?

Dagger 2 ContributesAndroidInjector 为模块提供活动

Map.mapTo 到另一个map

Mockito 的 argThat 在 Kotlin 中返回 null

如何从协程范围返回值

spring.config.location 在 Spring Boot 2.0.0 M6 上不起作用

在 Kotlin 中创建非绑定服务

Kotlin中的属性(properties)和参数(parameters)有什么区别?

在Kotlin中将列表转换为对的惯用方法

从另一个列表创建一个列表

Kotlin中对象和数据类的区别是什么?