2012-10-31 8 views
29

Nếu bạn có một lớp cha mẹ sử dụng chú thích @PostConstruct và bạn tạo một lớp con xuất phát từ nó. Phương pháp @PostConstruct có được gọi tự động mỗi khi một cá thể của lớp con được tạo ra không? vì phương thức @PostConstruct được gọi mỗi khi một cá thể của cha/mẹ được tạo ra.Bắt nguồn từ một lớp có Chú thích @PostConstruct

Tôi biết rằng trong lớp trẻ, nó tự động gọi số super(); mà không cần phải gọi cho chúng tôi.

im chỉ không chắc liệu chú thích @PostConstruct có được tự động gọi nếu lớp con đó gọi hàm tạo super(); hay không.

+2

Đặt 'println() 'cuộc gọi trong cả hai phương pháp, cháy lên ứng dụng của bạn, và xem những gì được in. – millimoose

+1

Giống như @millimoose được đề xuất, bạn có thể tự mình kiểm tra và trả lời câu hỏi của mình. Tôi nghĩ nó sẽ tốt cho những người khác trong tương lai. –

+1

Điều này có thể phụ thuộc vào những gì đang thực hiện tiêm. Tôi nghĩ rằng '@ PostConstruct' được công nhận bởi cả hai thẻ [tag: cdi] và [tag: ejb3], và có lẽ cũng bởi các framework khác, và chúng có thể có hành vi khác nhau. Bạn đang sử dụng khung làm việc nào ở đây? –

Trả lời

29

Sau khi thử nghiệm trường hợp này, phương thức @PostConstruct trong lớp cơ sở S automatically tự động được gọi.

Dòng chảy đi như thế này:

  1. Khi lớp con được tạo ra, bạn đang ở trong constructor của lớp con, sau đó bạn buộc phải vào tầng lớp phụ huynh tự động.
  2. Khi hàm tạo lớp cha được thực hiện, bạn sẽ được gửi trở lại hàm tạo của lớp con.
  3. Khi các nhà xây dựng lớp con được thực hiện bạn sẽ được tự động gửi đến các lớp PHỤ HUYNH @PostConstruct phương pháp
+10

Trong bài kiểm tra của tôi, nếu bạn đang ghi đè '@ PostConstruct' của một siêu, thì đứa trẻ được gọi là đầu tiên. Nếu bạn không ghi đè, thì cha mẹ sẽ được gọi trước. – Basil