Có cách nào để tất cả các class dùng chung một Scanner không?

Chào m.n
Mình mới học Java có thắc mắc là:
Giả sử class A cần dùng Scanner thì ta khai báo một instance của nó

Scanner scanner = new Scanner(System.in);

Nhưng bây giờ có một class B cũng cần dùng Scanner, thì phải chăng cũng phải tạo ra một instance mới cho Scanner?

Vậy có cách nào để tất cả các class dùng chung một Scanner không ạ?
Như trong C++ có std::cin dùng rất là tiện.
Tks m.n

Cậu có thể sử dụng Singleton design pattern để khiến tất cả sử dụng 1 scanner duy nhất.
Cậu có thể tham khảo code trong bài viết này (phần hidden content, check phần implementation của ConsoleScannerService).

7 Likes

Tuyệt đối không nên tạo một instance Scanner, cái này mặc đù vẫn chạy đc nhưng vô cùng không tốt. Nếu method nào dùng thì tạo ở method đó hoặc là tạo một cái ở main rồi dùng nó bằng cách truyền tham số chứ. Nhớ là không nên tạo một instance Scanner dùng chung trong field, hoặc bất kỳ một biến nào ko có trong thiết kế.

Cậu có thể giải thích thêm về điều này được không Trọng? :smile: Tớ muốn lắng nghe giải thích của cậu.
Mặt khác, tạo 1 instance Scanner ở main rồi truyền vào tham số có lẽ cũng là dùng chung scanner :wink:

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?