Thông thường trong các lớp Java có nhiều phương thức getter và setter, mỗi phương thức cho mỗi biến lớp mô hình dữ liệu. Tôi nhận ra rằng nhiều IDE sẽ tạo ra chúng cho bạn, nhưng tôi đang cố gắng tránh sự lộn xộn này và không có tất cả các phương thức này trong các lớp của tôi. Vì vậy, có cách nào để truy cập một biến trong một thời trang chỉ đọc bên ngoài lớp (như thể nó là công khai cuối cùng), trong khi vẫn giữ quyền truy cập ghi bên trong lớp hoặc phân lớp độc quyền (như thể nó là riêng tư hoặc được bảo vệ).Trong Java, có một phương án thay thế tốt hơn cho các phương thức getter và setter không?
Giải pháp giả duy nhất mà tôi đã đưa ra là một lớp cơ sở (hoặc giao diện với các phương thức mặc định) có phương thức get (String variableName), sau đó lấy các trường của lớp thông qua sự phản chiếu và trả về một lớp thích hợp . Nhược điểm là để làm việc, các biến phải được công khai, vì vậy chỉ theo quy ước nó đáp ứng các yêu cầu của tôi (trong lớp mở rộng/triển khai có các biến tôi muốn truy cập, tôi chỉ gọi phương thức get từ bên ngoài lớp và không triển khai phương thức đã đặt). Điều chính tôi không thích về điều này là nếu một tên biến thay đổi, người gọi của các phương thức get sẽ không gây ra lỗi trình biên dịch, vì tên biến chỉ là một chuỗi mã cứng.
Bất kỳ ai có ý tưởng tốt hơn?
Có. Tôi có một ý tưởng tốt hơn - * xin đừng làm điều này *. * Phản ánh * cực kỳ chậm. Và bằng cách không có setters/getters, bạn phá vỡ * đóng gói * cũng như * abstraction *. Và nếu bạn sử dụng các khung công tác như * Spring *, bạn sẽ cần những người định cư. – TheLostMind
Bạn nên đọc một lần 'Hiệu quả java bởi Joshua Bloch'. – Prashant
Nếu bạn muốn tránh lộn xộn thì không viết getters và setters trừ khi bạn thực sự cần chúng. –