Tôi đang cố gắng xây dựng một khung kiểm tra tự động (dựa trên jUnit, nhưng điều đó không quan trọng) đối với bài tập về nhà của học sinh của tôi. Họ sẽ phải tạo ra các hàm tạo cho một số lớp và cũng có thể thêm một số phương thức cho chúng. Sau đó, với các chức năng kiểm tra tôi cung cấp, họ sẽ kiểm tra xem chúng có ổn không.Java: newInstance của lớp không có hàm tạo mặc định
Điều tôi muốn làm là, bằng cách phản ánh, tạo một phiên bản mới của một số lớp tôi muốn kiểm tra. Vấn đề là đôi khi, không có hàm tạo mặc định. Tôi không quan tâm đến điều đó, Tôi muốn tạo một cá thể và tự khởi tạo các biến cá thể. Có cách nào để làm điều này không? Tôi xin lỗi nếu điều này đã được yêu cầu trước đó, nhưng tôi không thể tìm thấy câu trả lời nào.
Xin cảm ơn trước.
Nó sẽ liên quan đến một số phản ánh lộn xộn để có được một nhà xây dựng, và đi bộ nó, đưa ra một giá trị thích hợp cho mỗi đối số ... – bwawok
Cảm ơn. Vấn đề là tôi không biết nếu họ đã thêm các nhà xây dựng hay không. Tất nhiên, tôi có thể kiểm tra xem họ đã làm bằng cách bắt các ngoại lệ thích hợp. Nhưng tôi sẽ không biết nếu họ tạo ra các nhà xây dựng với các đối số chính xác. Thậm chí tệ hơn, tôi không biết liệu hàm tạo có hoạt động không. Tôi muốn xây dựng cá thể mà không phụ thuộc vào việc triển khai của chúng. – GermanK
@GermanK: Sử dụng Class.getConstructors() rồi thay vào đó và xem những gì có sẵn. Bạn * có * phụ thuộc vào việc triển khai để khởi tạo một lớp. Nếu bạn tạo một cá thể mà không gọi một trong các hàm tạo của chúng với các đối số thích hợp, bạn sẽ không chơi công bằng với các lớp của chúng, mà sẽ * mong đợi * được khởi tạo đúng cách. Tôi đề nghị bạn * ủy quyền * một chữ ký cụ thể. –