2017-06-17 14 views
7

Trong Java, để ghi đè phương pháp khi instantiating đối tượng mới, chúng tôi có thể làm điều nàyLàm cách nào để ghi đè phương thức khi đối tượng instantiating trong Kotlin?

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

Làm thế nào để làm điều đó trong Kotlin? Tôi đã thử mã này nhưng nó không biên dịch được.

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

lỗi bạn đang gặp phải là gì? –

+0

@NihalSaxena Nó sẽ không biên dịch, IDE nói Loại không phù hợp và tham chiếu chưa được giải quyết. – aldok

Trả lời

13

Nếu bạn muốn tạo lớp bên trong ẩn danh, bạn nên sử dụng object.

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

Xem thêm Object Expressions and Declarations.

Các vấn đề liên quan