Intefejsy a immutable

0

Swego czasu doradzaliście mi by robić klasy immutable, z polami publicznymi, bo tak jest modnie. Widziałem w kodzie u @jarekr000000 , że jak robił atrybuty publiczne to dodawał final.
Spróbowałem tak zrobić w klasie, która implementuje interfejs i zonk:

interface Message {
    Integer getValue();
}
class MessageImpl implements Message {
    public final Integer value;

    public MessageImpl(Integer value) {
        this.value = value;
    }

    Integer getValue() {
        return value;
    }

musiałbym tak jak powyżej dać 2 możliwości dostępu do value: messageImpl.value i messageImpl.getValue() albo usunąć interfejs Message. Ale jak go usunę to okaże się, że wysypie się klasa:

class Container {

    public (Message message) {
        message.getValue() // ...
        // ...
    }
    // ...
}

a założmy, że klas implementujących tego Message jest wiele.

0

A komu potrzebny taki interfejs?

Edit, bo widze twój edit:
Jak już muszisz mieć taki dziwny interfejs, to po prostu nie rób tego pola publicznego, bo nie ma potrzbey i tak się nie będziesz pewnie odwóływał, a tylko przez metodę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1