Czy geter musi być typu zmiennej?

0

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)?

0

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.

0

Możesz, ale większości przypadków nie powinieneś. Łamanie konwencji powinno mieć dobre uzasadnienie.

0

Dzięki. Druga opcja to przyjmowanie w seterze inta. Ktora opcja lepsza?

0

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.

0

Możesz, ale w większości przypadków nie powinieneś. Łamanie konwencji powinno mieć dobre uzasadnienie.

Przechowuj w klasie Stringi.

0

albo możesz napisać getXAsString...

0

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

1

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 intach czy Stringach.

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