Tôi đang cố gắng để tạo ra một thể hiện của một đặc điểm sử dụng phương pháp nàyLàm cách nào để tạo một cá thể của một đặc điểm trong một phương thức chung trong scala?
val inst = new Object with MyTrait
này hoạt động tốt, nhưng tôi muốn di chuyển sáng tạo này vào một chức năng máy phát điện, tức là.
object Creator {
def create[T] : T = new Object with T
}
Tôi rõ ràng là sẽ cần manifest để bằng cách nào đó sửa chữa những vấn đề loại tẩy xoá, nhưng trước khi tôi nhận được điều này, tôi chạy vào 2 câu hỏi:
Ngay cả với một biểu hiện tiềm ẩn , Scala vẫn yêu cầu T là một đặc điểm. Làm thế nào để thêm một hạn chế để tạo [T] sao cho T là một đặc tính?
Nếu tôi chọn sử dụng phương thức Class.newInstance để tạo cá thể động thay vì sử dụng "mới", làm cách nào tôi chỉ định "có" trong "đối tượng mới có T"? Có thể tự động tạo các loại mixin cụ thể mới trong thời gian chạy không?
Điều này có vẻ là một giới hạn thú vị của ngôn ngữ, nhưng tôi không thấy lý do tại sao nó không thể được sửa với hỗ trợ mixin "Động" mới trong Scala. Mã tra cứu đã có sẵn dưới dạng các phương thức tĩnh, vì vậy việc tra cứu tuyến tính có thể được tính toán trong thời gian chạy thay vì được đưa vào lớp bytecode. Sau đó, bạn chỉ cần thêm kiểm tra kiểu thời gian chạy để "asInstanceOf" hoạt động. – ACyclic