Tôi đang sửa đổi mã mà tôi không viết sử dụng JavaMail và có một chút rắc rối khi hiểu được tại sao API JavaMail được thiết kế theo cách đó. Tôi có cảm giác rằng nếu tôi hiểu, tôi có thể làm tốt hơn.Tại sao JavaMail Transport.send() là một phương thức tĩnh?
Chúng tôi gọi:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
Vậy tại sao là Eclipse cảnh báo tôi rằng đây:
transport.send(message, message.getAllRecipients());
là một cuộc gọi đến một phương pháp tĩnh?
Tại sao tôi nhận được đối tượng Transport và cung cấp các cài đặt cụ thể cho nó nếu tôi không thể sử dụng đối tượng đó để gửi tin nhắn? Lớp Transport thậm chí còn biết máy chủ và các thiết lập khác sử dụng để gửi tin nhắn như thế nào? Nó hoạt động tốt, rất khó tin. Điều gì sẽ xảy ra nếu tôi có các đối tượng Transport instantiated cho hai máy chủ khác nhau; làm thế nào nó sẽ biết cái nào để sử dụng?
Trong quá trình viết câu hỏi này, tôi đã phát hiện ra rằng tôi thực sự nên được gọi:
transport.sendMessage(message, message.getAllRecipients());
Vì vậy, mục đích của phương pháp tĩnh Transport.send() là gì? Đây có phải là thiết kế kém, hay có lý do nào đó theo cách này?