2016-05-16 20 views
32

Tương đương với static initialisation block trong Kotlin là gì?Khối khởi tạo tĩnh trong Kotlin

Tôi hiểu rằng Kotlin được thiết kế để không có những thứ tĩnh. Tôi đang tìm một cái gì đó với ngữ nghĩa tương đương - mã được chạy một lần khi lớp được nạp đầu tiên.

Trường hợp sử dụng cụ thể của tôi là tôi muốn bật tính năng DayNight từ thư viện Android AppCompat và the instructions nói để đặt một số mã trong khối khởi tạo tĩnh của lớp Application.

Trả lời

52

Từ một số quan điểm, companion objects trong Kotlin tương đương với các phần tĩnh của các lớp Java. Đặc biệt, chúng được khởi tạo trước khi sử dụng lần đầu tiên lớp, và điều này cho phép bạn sử dụng init khối của họ như là một thay thế cho initializers tĩnh Java:

class C { 
    companion object { 
     init { 
      //here goes static initializer code 
     } 
    } 
} 
+0

đối tượng bạn đồng hành là một quá mức cần thiết ở đây – voddan

+1

@voddan, OP được hỏi về thực thi mã trước sử dụng đầu tiên của một lớp học hiện có. Giải pháp với khai báo 'object' yêu cầu một thực sự sử dụng nó ở đâu đó vì khởi tạo lười biếng. – hotkey

+0

@voddan Bạn có muốn giải thích lý do tại sao nó là quá mức cần thiết và lựa chọn thay thế là gì? –

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