Czesc. Mam klasę, do której laduje inty, ale później korzystam z nich jak ze stringów. Czy będzie bledem, jeżeli geter do zmiennej int a ustawie jako return String.valueOf(a)?
Nie będzie, ale musisz uważać gdzie tej klasy używasz. Bo biblioteki jak JAXB, Jackson, Hibernate i różne inne zabawki które robią automatyczne konwersje między obiektami a jakimś innym formatem (json, xml itd) mogą sie wysypać na takim obiekcie.
Możesz, ale większości przypadków nie powinieneś. Łamanie konwencji powinno mieć dobre uzasadnienie.
Dzięki. Druga opcja to przyjmowanie w seterze inta. Ktora opcja lepsza?
Miałem na myśli, ze zmienia się typ zmiennej, ale argument w seterze zostaje :-) to co napisałem przed chwila bez twj informacji jest bez sensu.
Możesz, ale w większości przypadków nie powinieneś. Łamanie konwencji powinno mieć dobre uzasadnienie.
Przechowuj w klasie Stringi.
albo możesz napisać getXAsString...
a nie wygodniej i bardziej efektywniej jest przypadkiem zwracać typ pól taki jak jest w klasie czyli np int i w razie potrzeby w dalszym kodzie ten tym konwertować i robić z nim co potrzeba? takie mieszanie typów strasznie tworzy bałagan w kodzie
Jeżeli klasa ma tylko jedno pole to można pokusić się o napisanie tego w taki sposób:
class JakasKlasa{
private final int value;
JakasKlasa(int value) {
this.value = value;
}
public JakasKlasa map(Function<Integer, Integer> f){
return new JakasKlasa(f.apply(value));
}
public <T> T mapAsInt(Function<Integer, T> f){
return f.apply(value);
}
public <T> T mapAsString(Function<String, T> f){
return f.apply(value+"");
}
public void accept(Consumer<Integer> c){
c.accept(value);
}
}
I później w kodzie wykorzystujesz typ JakaśKlasa
, a nie rzezasz na gołych int
ach czy String
ach.