<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Komentarze do: Pytania rekrutacyjne Java &#8211; Obiekty niezmienne (immutable)	</title>
	<atom:link href="https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/feed/" rel="self" type="application/rss+xml" />
	<link>https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/</link>
	<description>Blog o programowaniu w Javie</description>
	<lastBuildDate>Fri, 04 Aug 2023 17:06:52 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>
		Autor: ArekP		</title>
		<link>https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-2569</link>

		<dc:creator><![CDATA[ArekP]]></dc:creator>
		<pubDate>Sat, 02 Jan 2021 15:33:42 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1473#comment-2569</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-545&quot;&gt;Mateusz Dąbrowski&lt;/a&gt;.

Warto pamiętać, że jak jest dużo pól w klasie to warto się zastanowić nad podzieleniem tej klasy na mniejsze (tak radzi wujek Bob).]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-545">Mateusz Dąbrowski</a>.</p>
<p>Warto pamiętać, że jak jest dużo pól w klasie to warto się zastanowić nad podzieleniem tej klasy na mniejsze (tak radzi wujek Bob).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-545</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Thu, 06 Feb 2020 21:01:25 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1473#comment-545</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-544&quot;&gt;Grace&lt;/a&gt;.

Oczywiście zawsze jest takie ryzyko, że ktoś będzie przekazywał builder jako parametr w różne miejsca. Ale to już kwestia niezrozumienia po co builder się stosuje i po co stosuje się niemutowalne obiekty, tworzone za pomocą takiego buildera.

Builder taki można napisać jeszcze inaczej:
&lt;pre&gt;
&lt;code&gt;public final class PersonAlt {
    private final String name;
    private final int age;

    private PersonAlt(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static class Builder {
        private String name;
        private int age;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public PersonAlt build() {
            return new PersonAlt(name, age);
        }
    }
    // ... getters ...
}&lt;/code&gt;
&lt;/pre&gt;
I teraz masz private final, ale jest to trochę mniej estetyczne bo musisz używać konstruktora obiektu (jak masz dużo pól w klasie, to też i będzie dużo parametrów w konstruktorze). Ale problem z przekazywaniem buildera pozostanie.

Co do public final to nie widziałem, żeby ktoś tak robił. Wszyscy trzymają się raczej konwencji getterów i dostępu przez nie do pól.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-544">Grace</a>.</p>
<p>Oczywiście zawsze jest takie ryzyko, że ktoś będzie przekazywał builder jako parametr w różne miejsca. Ale to już kwestia niezrozumienia po co builder się stosuje i po co stosuje się niemutowalne obiekty, tworzone za pomocą takiego buildera.</p>
<p>Builder taki można napisać jeszcze inaczej:</p>
<pre>
<code>public final class PersonAlt {
    private final String name;
    private final int age;

    private PersonAlt(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static class Builder {
        private String name;
        private int age;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public PersonAlt build() {
            return new PersonAlt(name, age);
        }
    }
    // ... getters ...
}</code>
</pre>
<p>I teraz masz private final, ale jest to trochę mniej estetyczne bo musisz używać konstruktora obiektu (jak masz dużo pól w klasie, to też i będzie dużo parametrów w konstruktorze). Ale problem z przekazywaniem buildera pozostanie.</p>
<p>Co do public final to nie widziałem, żeby ktoś tak robił. Wszyscy trzymają się raczej konwencji getterów i dostępu przez nie do pól.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Grace		</title>
		<link>https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-544</link>

		<dc:creator><![CDATA[Grace]]></dc:creator>
		<pubDate>Thu, 06 Feb 2020 20:02:42 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1473#comment-544</guid>

					<description><![CDATA[Hipotetyczne pytanie - 
Twój Builder jest zagnieżdżoną klasą statyczną. Pola w klasie User nie mogą być finalne - bo ustawia je nasz Builder. 
Istnieje możliwość że ktoś bedzie używał Twojego User.Builder bez .build() - działając sobie na Klasie Builder - przekazując pomiędzy metodami itd.. W końcu gdzieś zrobi .build() , ale nie wiemy dokładnie co i jak zmieniało naszą Builder.

Druga sprawa - pola chyba nie muszą być prywatne. Co z public final?]]></description>
			<content:encoded><![CDATA[<p>Hipotetyczne pytanie &#8211;<br />
Twój Builder jest zagnieżdżoną klasą statyczną. Pola w klasie User nie mogą być finalne &#8211; bo ustawia je nasz Builder.<br />
Istnieje możliwość że ktoś bedzie używał Twojego User.Builder bez .build() &#8211; działając sobie na Klasie Builder &#8211; przekazując pomiędzy metodami itd.. W końcu gdzieś zrobi .build() , ale nie wiemy dokładnie co i jak zmieniało naszą Builder.</p>
<p>Druga sprawa &#8211; pola chyba nie muszą być prywatne. Co z public final?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/#comment-323</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Wed, 11 Dec 2019 19:16:29 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1473#comment-323</guid>

					<description><![CDATA[Przy Hibernate bym wspomniał jeszcze ,,mo annotacji @Immutable oraz JPAowej @Entity(mutable=false). Nie dają one niemutowalności z sensie Javowym. Bardziej daje niemutowalność w sensie logicznym nie updateując stanu encji w bazie lub waląc wprost Exceptionem.]]></description>
			<content:encoded><![CDATA[<p>Przy Hibernate bym wspomniał jeszcze ,,mo annotacji @Immutable oraz JPAowej @Entity(mutable=false). Nie dają one niemutowalności z sensie Javowym. Bardziej daje niemutowalność w sensie logicznym nie updateując stanu encji w bazie lub waląc wprost Exceptionem.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
