Tôi đang cố gắng sửa một lỗi trong một trong các chương trình mà tôi nghĩ có thể là do Hibernate tìm ra cách khởi tạo một thể hiện của đối tượng mà không gọi hàm khởi tạo mặc định (hoặc bất kỳ hàm nào khác).Có thể tạo một thể hiện của một đối tượng trong Java mà không cần gọi hàm tạo không?
Trả lời
Thực ra, có, có thể bỏ qua hàm tạo khi bạn khởi tạo một đối tượng, nếu bạn sử dụng objenesis để khởi tạo đối tượng cho bạn. Nó thực hiện thao tác bytecode để đạt được điều này.
Deserializing một đối tượng cũng sẽ bỏ qua hàm tạo.
Không thể thực hiện điều này bằng cách sử dụng sự phản chiếu.
Có, deserializing một đối tượng không gọi constructor của nó.
Điều đó nói rằng, tôi không thấy lý do tại sao ngủ đông sẽ tuần tự hóa một đối tượng, trừ khi có lẽ trong bộ nhớ cache cấp thứ hai.
Deserialization liên quan đến việc tạo các đối tượng mà không cần gọi một hàm tạo.
Có thể (ít nhất với Sun/Oracle JDK) để thực hiện việc này theo lập trình. Điều này được bao gồm trong "Creating Objects Without Calling Constructors", một ấn bản của The Java Specialists' Newsletter. Nó liên quan đến việc sử dụng các lớp học từ các gói sun.*
do đó không phải là di động.
Chỉ cần hoàn thành hình ảnh: sử dụng phương pháp clone
để tạo đối tượng mới cũng bỏ qua các nhà xây dựng.
Với điều kiện là bản sao() được thực thi chính xác, tất nhiên. Có thể ghi đè lên bản sao hoạt động như một phương thức nhà máy không sử dụng super.clone(). (Trong khi super.clone() nên được sử dụng - không phải là hàm tạo) – DerMike
- 1. Khởi tạo một thể hiện đối tượng nguồn góc mà không gọi máy chủ
- 2. Tại sao tôi không thể khởi tạo một đối tượng chuỗi với một hàm tạo?
- 3. Tạo một thể hiện đối tượng unconstructed
- 4. Việc tạo một thể hiện của một lớp con có tự động tạo đối tượng siêu lớp của nó không?
- 5. Tôi có thể tạo một hàm tạo để deserializes một phiên bản chuỗi của đối tượng của tôi không?
- 6. Có thể tạo một thể hiện của một lớp mà không cần chạy bất kỳ mã nào từ lớp không? (không có ctor, không có khởi tạo trường)
- 7. Bạn có thể đặt tên một thể hiện giống với tên hàm tạo của nó không?
- 8. Chúng ta có thể tạo một thể hiện của một giao diện trong Java không?
- 9. Tạo một HashMap trong Scala từ một danh sách các đối tượng mà không cần lặp
- 10. Có một thể hiện của siêu lớp được tạo khi chúng ta khởi tạo một đối tượng không?
- 11. Tại sao có thể gọi hàm thành viên không tĩnh mà không có một cá thể đối tượng?
- 12. Tạo đối tượng trong Symfony2 mà không cần Doctrine
- 13. Có thể tạo một đối tượng không có lớp trong C# không?
- 14. Tôi có thể khởi tạo một lớp ẩn danh trong hàm tạo của lớp ngoài không?
- 15. Có thể constructor gọi một hàm tạo khác trong C++?
- 16. Gọi hàm từ tệp Lớp mà không tạo đối tượng của lớp đó
- 17. Có thể lấy chuỗi tên thuộc tính đối tượng mà không tạo đối tượng đối tượng không?
- 18. Bạn có thể tạo ngữ cảnh OpenGL mà không cần mở một cửa sổ không?
- 19. Có thể tạo một đối tượng giả lập thực hiện nhiều giao diện với EasyMock không?
- 20. Bạn có thể khởi tạo một đối tượng đối tượng từ JSON trong .NET không?
- 21. Tạo một email trong Java mà không có phiên thư
- 22. Làm thế nào để tạo một mảng kiểu C mà không cần gọi các hàm tạo mặc định?
- 23. Tại sao một con trỏ thông minh không thể gọi hàm new() cho tôi trong hàm tạo của nó?
- 24. DataContractSerializer không gọi hàm tạo của tôi?
- 25. AutoFixture có thể thực hiện một đại biểu tại thời điểm tạo đối tượng không?
- 26. Python - Tồn tại một hàm được gọi khi một đối tượng không thực hiện một hàm?
- 27. Chúng ta có thể tạo một đối tượng của một giao diện không?
- 28. Có thể sao chép phương thức tạo đối tượng bằng cách sử dụng hàm tạo
- 29. Có thể một enum java có nhiều hơn một hàm tạo không?
- 30. Tôi có thể tạo TABLE TEMPORARY trong SQLAlchemy mà không cần thêm vào Table._prefixes không?
Bạn có thể đăng sự cố ban đầu thay vì giải pháp được giả định. –
Hibernate sử dụng hàm tạo rỗng mặc định của các thực thể. Bạn đang đi sai đường. Hãy đăng sự cố của bạn để thay thế. –