Trong Java, chúng ta có thể làm như sau
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Nhưng nếu chúng ta viết lại nó cho Kotlin trực tiếp như dưới đây
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Tôi đã gặp lỗi không tìm thấy add
và remove
hoạt động từ Danh sách của tôi
Tôi làm việc xung quanh việc chuyển nó thành ArrayList, nhưng đó là điều cần thiết để truyền nó, trong khi trong quá trình truyền Java thì không bắt buộc. Và điều đó đánh bại mục đích có Danh sách lớp trừu tượng
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Có cách nào để tôi sử dụng Danh sách nhưng không cần phải sử dụng Danh sách, như những gì có thể được thực hiện trong Java không?
myList = null
và sau đó trong cuộc gọi thêm mà không có!!
. Bạn có thể khắc phục điều này bằng cách sử dụnglateinit
từ khóa trước tài sản của mình như vậy:lateinit var myList: List<Int>
theo cách này bạn sẽ không cần phải khởi tạo danh sách ngay lập tức, nhưng bạn đảm bảo với trình biên dịch rằng bạn sẽ khởi tạo nó trước khi sử dụng danh sách lần đầu tiên. Đó là một giải pháp mượt mà hơn, nhưng nó đặt trách nhiệm cho bạn với tư cách là một nhà phát triển.