<html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <base href="http://wiki.javaforum.hu" />
        <style type="text/css">
        body, #email-content, #email-content-inner { font-family: Arial,FreeSans,Helvetica,sans-serif; }
        body, p, blockquote, pre, code, td, th, li, dt, dd { font-size: 13px; }
        small { font-size: 11px; }

        body { width:100% !important; -webkit-font-smoothing: antialiased; }

        body,
        #email-wrapper { background-color: #f0f0f0; }
        #email-wrapper-inner { padding: 20px; text-align: center; }
        #email-content-inner { background-color: #fff; border: 1px solid #bbb; color: $menuTxtColour; padding:20px; text-align:left; }
        #email-footer { padding: 0 16px 32px 16px; margin: 0; }

        .email-indent { margin: 8px 0 16px 0; }
        .email-comment { margin: 0 0 0 56px; }

        #email-title-avatar { text-align: left; vertical-align: top; width: 56px; }
        #email-title-flavor { margin: 0; padding: 0 0 4px 0; }
        #email-title-heading { font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0; }
        #email-title .icon { border: 0; padding: 0 2px 0 0; text-align: left; }

        #email-actions { border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; }
        #email-actions td { padding-top: 8px; }
        #email-actions .left { max-width: 45%; text-align: left; }
        #email-actions .right { text-align: right; }
        .email-reply-divider { border-top: 1px solid #bbb; color: #505050; margin: 32px 0 8px 0; padding: 8px 0; }
        .email-section-title { border-bottom: 1px solid #bbb; margin: 8px 0; padding: 8px 0 0 0; }

        .email-metadata { color: #505050; }

        a { color: #326ca6; text-decoration: none; }
        a:hover { color: #336ca6; text-decoration: underline; }
        a:active {color: #326ca6; }

        a.email-footer-link { color: #505050; font-size: 11px; }

        .email-item-list { list-style: none; margin: 4px 0; padding-left: 0; }
        .email-item-list li { list-style: none; margin: 0; padding: 4px 0; }
        .email-list-divider { color: #505050; padding: 0 0.35em; }

        .avatar { -ms-interpolation-mode: bicubic; }
        .avatar-link { margin: 2px; }

        .tableview th { border-bottom: 1px solid #69C; font-weight: bold; text-align: left; }
        .tableview td { border-bottom: 1px solid #bbbbbb; text-align: left; padding: 4px 16px 4px 0; }

        .aui-message {  margin: 1em 0; padding: 8px; }
        .aui-message.info { background-color: #e0f0ff; border: 1px solid #9eb6d4; }
        .aui-message.success { background-color: #ddfade; border: 1px solid #93c49f; }
        .aui-message.error,
        .aui-message.removed { background-color: #ffe7e7; border: 1px solid #df9898; color: #000; }

                        @media handheld, only screen and (max-device-width: 480px) {
            div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }
            small, small a { -webkit-text-size-adjust: 90%; }

            td[id=email-wrapper-inner] { padding: 2px !important; }
            td[id=email-content-inner] { padding: 8px !important; }
            td[id=email-footer] { padding: 8px 12px !important; }
            div[class=email-indent] { margin: 8px 0px !important; }
            div[class=email-comment] { margin: 0 !important; }

            p[id=email-title-flavor] a { display: block; } /* puts the username and the action on separate lines */
            p[id=email-permalink] { padding: 4px 0 0 0 !important; }

            table[id=email-actions] td { padding-top: 0 !important; }
            table[id=email-actions] td.right { text-align: right !important; }
            table[id=email-actions] .email-list-item { display: block; margin: 1em 0 !important; word-wrap: normal !important; }
            span[class=email-list-divider] { display: none; }
        }
        ​

        </style>
    </head>
    <body bgcolor="#f0f0f0" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; width: 100%; -webkit-font-smoothing: antialiased; background-color: #f0f0f0">
        <table id="email-wrapper" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f0f0f0">
            <tbody>
                <tr valign="middle">
                    <td id="email-wrapper-inner" style="font-size: 13px; padding: 20px; text-align: center">
                        <table id="email-content" width="100%" cellspacing="0" cellpadding="0" border="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif">
                            <tbody>
                                <tr valign="top">
                                    <td id="email-content-inner" width="100%" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; background-color: #fff; border: 1px solid #bbb; padding: 20px; text-align: left">
                                        <table id="email-title" cellpadding="0" cellspacing="0" border="0" width="100%">
                                            <tbody>
                                                <tr>
                                                    <td id="email-title-avatar" rowspan="2" style="font-size: 13px; text-align: left; vertical-align: top; width: 56px"> <img class="avatar" src="cid:avatar_d7177d5506ab05ef431ea35647b597a3" border="0" height="48" width="48" style="-ms-interpolation-mode: bicubic" /> </td>
                                                    <td valign="top" style="font-size: 13px">
                                                        <div id="email-title-flavor" class="email-metadata" style="margin: 0; padding: 0 0 4px 0; color: #505050">
                                                            <a href="http://wiki.javaforum.hu/display/~auth.gabor" style="color:#326ca6;text-decoration:none;; color: #326ca6; text-decoration: none">Auth G&aacute;bor</a> wrote a blog post:
                                                        </div> </td>
                                                </tr>
                                                <tr>
                                                    <td valign="top" style="font-size: 13px"> <h2 id="email-title-heading" style="font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0"> <a href="http://wiki.javaforum.hu/display/JAVAFORUM/2012/06/08/Java7+-+java.util.Objects" style="color: #326ca6; text-decoration: none"> <img class="icon" src="cid:blogpost-icon" alt="" style="border: 0; padding: 0 2px 0 0; text-align: left" /> <strong style="font-size:16px;line-height:20px;vertical-align:top;">Java7 - java.util.Objects</strong> </a> </h2> </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                        <div class="email-indent" style="margin: 8px 0 16px 0">
                                            <div class="email-page">
                                                <p style="font-size: 13px">A Java7 egyik csendes &uacute;j&iacute;t&aacute;sa a <a href="http://hg.openjdk.java.net/jdk7/build/jdk/file/9b8c96f96a0f/src/share/classes/java/util/Objects.java" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">java.util.Objects</a> oszt&aacute;ly, amely k&ouml;zel tucatnyi statikus met&oacute;dust ad az objektumok kezel&eacute;s&eacute;hez, amely met&oacute;dusok egy r&eacute;sze nem esik zavarba, ha <em>null</em> &eacute;rt&eacute;ket kap. Az Objects tipikus esete utility oszt&aacute;lyoknak,&nbsp;<em>final</em> m&oacute;dos&iacute;t&oacute;val van ell&aacute;tva, illetve van egy priv&aacute;t konstruktora is:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 37; theme: Default; brush: java; gutter: true" style="font-size: 13px">private Objects() {
  throw new AssertionError(&quot;No java.util.Objects instances for you!&quot;);
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Suhanjunk v&eacute;gig az eddig megval&oacute;s&iacute;tott met&oacute;duslist&aacute;n... <img class="emoticon emoticon-smile" src="/s/en_GB/3273/3/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)" /></p>
                                                <h3 id="Java7-javautilObjects-equals">equals</h3>
                                                <p style="font-size: 13px">Az első met&oacute;dus egy egyszerű egyezős&eacute;g vizsg&aacute;lat, amely levizsg&aacute;lja a k&eacute;t &ouml;sszehasonl&iacute;tand&oacute; param&eacute;ter k&ouml;z&uuml;l az elsőt, hogy annak &eacute;rt&eacute;ke nem <em>null</em>, majd ezek ut&aacute;n v&eacute;gzi el az &ouml;sszevet&eacute;st, &iacute;gy ez a met&oacute;dus <em>null safe</em>: haszn&aacute;lata sor&aacute;n nem kellNullPointerException kiv&eacute;telre sz&aacute;m&iacute;tanunk. A forr&aacute;sa egyszerű:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 56; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static boolean equals(Object a, Object b) {
  return (a == b) || (a != null &amp;&amp; a.equals(b));
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = null;
String b = null;
System.out.println(Objects.equals(a, b));
b = &quot;nem &uuml;res&quot;;
System.out.println(Objects.equals(a, b));
a = &quot;nem &uuml;res&quot;;
System.out.println(Objects.equals(a, b));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">true
false
true</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-deepEquals">deepEquals</h3>
                                                <p style="font-size: 13px">A <em>deepEquals</em> met&oacute;dus hasonl&iacute;t a fentire, de sima <em>equals</em> helyett az <em>Arrays.deepEquals</em> met&oacute;dust h&iacute;vja meg <em>null</em> ellenőrz&eacute;ssel, &iacute;gy egy sorban tudunk k&eacute;t t&ouml;mb&ouml;t &ouml;sszevetni:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 77; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static boolean deepEquals(Object a, Object b) {
  if (a == b)
    return true;
  else if (a == null || b == null)
    return false;
  else
    return Arrays.deepEquals0(a, b);
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String[] a = null;
String[] b = null;
System.out.println(Objects.deepEquals(a, b));
b = new String[]{&quot;semmi&quot;, &quot;&uacute;jabb semmi&quot;};
System.out.println(Objects.deepEquals(a, b));
a = new String[]{&quot;semmi&quot;, &quot;&uacute;jabb semmi&quot;};
System.out.println(Objects.deepEquals(a, b));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">true
false
true</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-hashCode">hashCode</h3>
                                                <p style="font-size: 13px">A <em>hashCode</em> lehetős&eacute;get ad <em>null safe</em> h&iacute;v&aacute;sra, az &aacute;tadott objektumnak csak akkor h&iacute;v&oacute;dik meg a <em>hashCode</em> met&oacute;dusa, ha a param&eacute;ter nem <em>null</em>:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 95; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static int hashCode(Object o) {
  return o != null ? o.hashCode() : 0;
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = null;
System.out.println(Objects.hashCode(a));
a = &quot;semmi&quot;;
System.out.println(Objects.hashCode(a));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">0
109322039</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-hash">hash</h3>
                                                <p style="font-size: 13px">Hasonl&iacute;t az előzőre, azzal a k&uuml;l&ouml;nbs&eacute;ggel, hogy a met&oacute;dus param&eacute;terlist&aacute;ja dinamikusan bőv&iacute;thető, s az eredm&eacute;ny&uuml;l kapott objektum-t&ouml;mb &aacute;tad&aacute;sra ker&uuml;l a <em>Arrays.hashCode</em> met&oacute;dusnak, &iacute;gy lehetős&eacute;g&uuml;nk van&nbsp;<em>null</em> biztos hash k&eacute;pz&eacute;sre t&ouml;bb argumentumb&oacute;l:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 125; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static int hash(Object... values) {
  return Arrays.hashCode(values);
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = null;
String b = null;
System.out.println(Objects.hash(a, b));
b = &quot;semmi&quot;;
System.out.println(Objects.hash(a, b));
a = &quot;semmi&quot;;
System.out.println(Objects.hash(a, b));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">961
109323000
-796661087</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-toString">toString</h3>
                                                <p style="font-size: 13px">Ez a met&oacute;dus kiss&eacute; kil&oacute;g a t&ouml;bbi k&ouml;z&uuml;l, mert <em>null</em> biztos konverzi&oacute;ra eddig is lehetős&eacute;g volt az al&aacute;bb is l&aacute;that&oacute; <em>String.valueOf(o)</em> haszn&aacute;lat&aacute;val:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 139; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static String toString(Object o) {
  return String.valueOf(o);
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = null;
System.out.println(Objects.toString(a));
a = &quot;semmi&quot;;
System.out.println(Objects.toString(a));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">null
semmi</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-toStringalap&eacute;rtelmezett&eacute;rt&eacute;k">toString + alap&eacute;rtelmezett &eacute;rt&eacute;k</h3>
                                                <p style="font-size: 13px">Az előzőn&eacute;l sokkal hasznosabb met&oacute;dus a most k&ouml;vetkező, amelyn&eacute;l megadhatunk egy alap&eacute;rtelmezett &eacute;rt&eacute;ket, ha az &aacute;tadott objektum &eacute;rt&eacute;ke <em>null</em>:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 156; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static String toString(Object o, String nullDefault) {
  return (o != null) ? o.toString() : nullDefault;
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = null;
System.out.println(Objects.toString(a, &quot;hopsza, ez null&quot;));
a = &quot;semmi&quot;;
System.out.println(Objects.toString(a));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">hopsza, ez null
semmi</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-compare">compare</h3>
                                                <p style="font-size: 13px">A <em>compare</em> met&oacute;dus k&eacute;t objektum &ouml;sszehasonl&iacute;t&aacute;s&aacute;ra j&oacute;, s ez a t&ouml;bbi met&oacute;dushoz k&eacute;pest k&eacute;t okb&oacute;l is rendhagy&oacute;:</p>
                                                <ul>
                                                    <li style="font-size: 13px">nem <em>null safe</em></li>
                                                    <li style="font-size: 13px">kell neki egy Comparator implement&aacute;ci&oacute;, amely sz&uuml;ks&eacute;g eset&eacute;n lehet <em>null safe</em></li>
                                                </ul>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 180; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static &lt;T&gt; int compare(T a, T b, Comparator&lt;? super T&gt; c) {
  return (a == b) ? 0 :  c.compare(a, b);
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata (hib&aacute;t okoz):</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">Comparator&lt;String&gt; comparator = new Comparator&lt;String&gt;() {
  public int compare(String o1, String o2)
  {
    return o1.compareTo(o2);
  }
};

String a = null;
String b = null;
System.out.println(Objects.compare(a, b, comparator));
b = &quot;semmi&quot;;
System.out.println(Objects.compare(a, b, comparator));
a = &quot;semmi&quot;;
System.out.println(Objects.compare(a, b, comparator));</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">0
Exception in thread &quot;main&quot; java.lang.NullPointerException
    at hu.javaforum.showobjects.App$1.compare(App.java:19)
    at hu.javaforum.showobjects.App$1.compare(App.java:15)
    at java.util.Objects.compare(Objects.java:181)
    at hu.javaforum.showobjects.App.main(App.java:27)</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-requireNonNull">requireNonNull</h3>
                                                <p style="font-size: 13px">Ez egy nagyon hasznos met&oacute;dus, jegyezz&uuml;k meg, mert nem csin&aacute;l ugyan sokat, de azt gyakran haszn&aacute;ljuk, ha param&eacute;tereket ellenőrz&uuml;nk! Megvizsg&aacute;lja, hogy az &aacute;tadott első param&eacute;ter <em>null</em> &eacute;rt&eacute;kű-e, ha igen, akkor dob egy <em>NullPointerException</em> kiv&eacute;telt, ha nem, akkor visszaadja az objektumot:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 199; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static &lt;T&gt; T requireNonNull(T obj) {
  if (obj == null)
    throw new NullPointerException();
  return obj;
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = Objects.requireNonNull(&quot;semmi&quot;);
System.out.println(a);
String b = Objects.requireNonNull(null);
System.out.println(b);</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">semmi
Exception in thread &quot;main&quot; java.lang.NullPointerException
    at java.util.Objects.requireNonNull(Objects.java:201)
    at hu.javaforum.showobjects.App.main(App.java:17)</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-requireNonNullsz&ouml;veg">requireNonNull + sz&ouml;veg</h3>
                                                <p style="font-size: 13px">Hasonl&oacute; a fentihez, &aacute;m ez esetben megadhatunk egy sz&ouml;veget, amely adott esetben &aacute;tad&oacute;dik a <em>NullPointerException</em> kiv&eacute;telnek:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Objects.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="first-line: 224; theme: Default; brush: java; gutter: true" style="font-size: 13px">public static &lt;T&gt; T requireNonNull(T obj, String message) {
  if (obj == null)
    throw new NullPointerException(message);
  return obj;
}</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Haszn&aacute;lata:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Example.java</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size: 13px">String a = Objects.requireNonNull(&quot;semmi&quot;, &quot;A param&eacute;ter &eacute;rt&eacute;ke null&quot;);
System.out.println(a);
String b = Objects.requireNonNull(null, &quot;A param&eacute;ter &eacute;rt&eacute;ke null&quot;);
System.out.println(b);</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">Az eredm&eacute;ny:</p>
                                                <div class="code panel" style="border-width: 1px;">
                                                    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
                                                        <b>Az eredm&eacute;ny</b>
                                                    </div>
                                                    <div class="codeContent panelContent">
                                                        <pre class="theme: Default; brush: html/xml; gutter: false" style="font-size: 13px">semmi
Exception in thread &quot;main&quot; java.lang.NullPointerException: A param&eacute;ter &eacute;rt&eacute;ke null
    at java.util.Objects.requireNonNull(Objects.java:226)
    at hu.javaforum.showobjects.App.main(App.java:17)</pre>
                                                    </div>
                                                </div>
                                                <h3 id="Java7-javautilObjects-Konkl&uacute;zi&oacute;">Konkl&uacute;zi&oacute;</h3>
                                                <p style="font-size: 13px">Nagyon hasznos oszt&aacute;ly, haszn&aacute;lja mindenki&nbsp;– aki teheti, ugyanis nagyon sok saj&aacute;t oszt&aacute;ly van a projektjeinkben, amelyek hasonl&oacute; vagy pontosan ilyen m&oacute;don műk&ouml;dnek, mivel egy-egy fenti met&oacute;dus haszn&aacute;lat&aacute;val a forr&aacute;sk&oacute;dunk egyszerűbb &eacute;s &aacute;tl&aacute;that&oacute;bb lesz, m&aacute;sr&eacute;szt kevesebb saj&aacute;t forr&aacute;sk&oacute;dot kell majd karbantartanunk.</p>
                                                <p style="font-size: 13px">(inspir&aacute;ci&oacute;: <a href="http://www.javabeat.net/2012/06/java-util-objects-a-static-utility-for-objects-introduced-in-java-7/" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">www.javabeat.net/2012/06/java-util-objects-a-static-utility-for-objects-introduced-in-java-7/</a>)</p>
                                                <hr />
                                                <p style="font-size: 13px">
                                                    <style type="text/css">
    .rater {
        color: #949494;
        font-size: 11px;
        margin: 4px 4px;
        overflow: auto;
    }
    .rater td {
        vertical-align: middle;
        padding-top: 6px;
    }
    .rater .images {
        padding-top: 3px;
    }
    .rater .links {
        cursor: pointer;
    }
    .rater .disabled a {
        cursor: default;
    }
    .rater img {
        height: 18px;
        width: 15px;
    }
    .rater .wait img {
        height: 18px;
        width: 20px;
        background: transparent url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/loading_mini.gif) no-repeat scroll center left;
    }
    .rater a img {
        border-style: none;
    }
    .results.caption {
        padding-left: 8px;
    }
    .rater .right-space {
        padding-right: 8px;
    }

    /* sprites */
    .rater img { background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; }
    .rater a.out img { background-position: 0 -275px; }
    .rater a.over img, .rater img.over { background-position: 0 -226px; }
    .rater a.off img, .rater img.off { background-position: 0 -128px; }
    .rater a.on img, .rater img.on { background-position: 0 -177px; }
    .rater img.half { background-position: 0 -79px; }

                                                    </style> <img width="0px" height="0px" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/loading_mini.gif" /> <img width="0px" height="0px" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif" /> </p>
                                                <!-- only output the .vote td's if they CAN vote, but have NOT yet voted -->
                                                <!-- obviously change the URL's on the a tags to reflect the various choices -->
                                                <!-- only output the .wait td's if they CAN vote, but haven't already voted -->
                                                <!-- always output .results td's - the classes (on, half and off) depict the current avg. rating -->
                                                <!--td>&nbsp;&nbsp;&nbsp;&nbsp;<a id="activatePlusone-24150032" href="#"
                onClick="gapi.plusone.render('plusone-div-24150032');document.getElementById('activatePlusone-24150032').style.display='none';">Activate the +1 button</a>
                <div id="plusone-div-24150032"></div>
        </td-->
                                                <table class="rater ceoId-24150032" style="color: #949494; font-size: 11px; margin: 4px 4px; overflow: auto">
                                                    <tbody>
                                                        <tr>
                                                            <!-- only output the .vote td's if they CAN vote, but have NOT yet voted -->
                                                            <td class="vote caption" style="font-size: 13px; vertical-align: middle; padding-top: 6px">Your Rating:</td>
                                                            <td class="vote thanks" style="display:none;; font-size: 13px; vertical-align: middle; padding-top: 6px">Thanks for voting!</td>
                                                            <!-- obviously change the URL's on the a tags to reflect the various choices -->
                                                            <td class="vote links images right-space" style="font-size: 13px; vertical-align: middle; padding-top: 6px; padding-top: 3px; cursor: pointer; padding-right: 8px"> <a class="out" href="/plugins/rate/rating.action?decorator=none&amp;displayFilter.includeCookies=true&amp;displayFilter.includeUsers=true&amp;ceoId=24150032&amp;rating=1&amp;redirect=true" alt="Pathetic" title="Pathetic" style="color: #326ca6; text-decoration: none"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" style="height: 18px; width: 15px; border-style: none; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -275px" /></a><a class="out" href="/plugins/rate/rating.action?decorator=none&amp;displayFilter.includeCookies=true&amp;displayFilter.includeUsers=true&amp;ceoId=24150032&amp;rating=2&amp;redirect=true" alt="Bad" title="Bad" style="color: #326ca6; text-decoration: none"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" style="height: 18px; width: 15px; border-style: none; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -275px" /></a><a class="out" href="/plugins/rate/rating.action?decorator=none&amp;displayFilter.includeCookies=true&amp;displayFilter.includeUsers=true&amp;ceoId=24150032&amp;rating=3&amp;redirect=true" alt="OK" title="OK" style="color: #326ca6; text-decoration: none"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" style="height: 18px; width: 15px; border-style: none; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -275px" /></a><a class="out" href="/plugins/rate/rating.action?decorator=none&amp;displayFilter.includeCookies=true&amp;displayFilter.includeUsers=true&amp;ceoId=24150032&amp;rating=4&amp;redirect=true" alt="Good" title="Good" style="color: #326ca6; text-decoration: none"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" style="height: 18px; width: 15px; border-style: none; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -275px" /></a><a class="out" href="/plugins/rate/rating.action?decorator=none&amp;displayFilter.includeCookies=true&amp;displayFilter.includeUsers=true&amp;ceoId=24150032&amp;rating=5&amp;redirect=true" alt="Outstanding!" title="Outstanding!" style="color: #326ca6; text-decoration: none"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" style="height: 18px; width: 15px; border-style: none; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -275px" /></a> </td>
                                                            <!-- only output the .wait td's if they CAN vote, but haven't already voted -->
                                                            <td class="wait images" style="display:none;; font-size: 13px; vertical-align: middle; padding-top: 6px; padding-top: 3px"><img src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="Please Wait" title="Please Wait" style="height: 18px; width: 15px; height: 18px; width: 20px; background: transparent url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/loading_mini.gif) no-repeat scroll center left; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left" /></td>
                                                            <td class="wait text right-space" style="display:none;; font-size: 13px; vertical-align: middle; padding-top: 6px; padding-right: 8px">Please Wait</td>
                                                            <!-- always output .results td's - the classes (on, half and off) depict the current avg. rating -->
                                                            <td class="results caption border" style="font-size: 13px; vertical-align: middle; padding-top: 6px; padding-left: 8px">Results:</td>
                                                            <td class="results images" style="font-size: 13px; vertical-align: middle; padding-top: 6px; padding-top: 3px"> <img class="off" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="Pathetic" title="Pathetic" style="height: 18px; width: 15px; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -128px" /><img class="off" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="Bad" title="Bad" style="height: 18px; width: 15px; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -128px" /><img class="off" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="OK" title="OK" style="height: 18px; width: 15px; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -128px" /><img class="off" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="Good" title="Good" style="height: 18px; width: 15px; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -128px" /><img class="off" src="/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/blank.gif" alt="Outstanding!" title="Outstanding!" style="height: 18px; width: 15px; background: url(/download/resources/com.adaptavist.confluence.rate:rate/resources/themes/v2/gfx/rater.gif) no-repeat top left; background-position: 0 -128px" /> </td>
                                                            <td class="results value" style="font-size: 13px; vertical-align: middle; padding-top: 6px">0</td>
                                                            <td class="results ratings" style="font-size: 13px; vertical-align: middle; padding-top: 6px">rates</td>
                                                            <!--td>&nbsp;&nbsp;&nbsp;&nbsp;<a id="activatePlusone-24150032" href="#"
                onClick="gapi.plusone.render('plusone-div-24150032');document.getElementById('activatePlusone-24150032').style.display='none';">Activate the +1 button</a>
                <div id="plusone-div-24150032"></div>
        </td-->
                                                            <td class="results" style="font-size: 13px; vertical-align: middle; padding-top: 6px">&nbsp; &nbsp;</td>
                                                            <td style="font-size: 13px; vertical-align: middle; padding-top: 6px">
                                                                <g:plusone></g:plusone></td>
                                                            <td class="results" style="font-size: 13px; vertical-align: middle; padding-top: 6px">&nbsp; &nbsp;</td>
                                                            <td style="font-size: 13px; vertical-align: middle; padding-top: 6px">
                                                                <div class="fb-like" data-send="true" data-layout="button_count" data-width="450" data-show-faces="true"></div></td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                                <p style="font-size: 13px"></p>
                                                <p style="font-size: 13px"> </p>
                                                <div class="bv_viewtracker">
                                                    <span class="bv_viewracker_span bv_viewtracker_closed"> Page viewed 1 times by 1 users since Jun 08, 2012 </span>
                                                </div>
                                                <div class="bv_viewtracker_visits" style="display:none;">
                                                    <table class="bv_viewtracker_table tableview attachments">
                                                        <tbody>
                                                            <tr class="bv_viewtracker_header">
                                                                <th class="bv_viewtracker_header_name" style="font-size: 13px; border-bottom: 1px solid #69c; font-weight: bold; text-align: left">Name</th>
                                                                <th class="bv_viewtracker_header_lastviewed" style="font-size: 13px; border-bottom: 1px solid #69c; font-weight: bold; text-align: left">Last viewed</th>
                                                                <th class="bv_viewtracker_header_timesviewed" style="font-size: 13px; border-bottom: 1px solid #69c; font-weight: bold; text-align: left">Times viewed</th>
                                                            </tr>
                                                            <tr class="bv_viewtracker_body">
                                                                <td class="bv_viewtracker_body_name" style="font-size: 13px; border-bottom: 1px solid #bbb; text-align: left; padding: 4px 16px 4px 0"> <a href="/display/~javalist" class="url fn confluence-userlink" data-username="javalist" style="color: #326ca6; text-decoration: none">Javaforum List</a><br /> </td>
                                                                <td class="bv_viewtracker_body_lastviewed" style="font-size: 13px; border-bottom: 1px solid #bbb; text-align: left; padding: 4px 16px 4px 0">Jun 08, 2012 19:01</td>
                                                                <td class="bv_viewtracker_body_timesviewed" style="font-size: 13px; border-bottom: 1px solid #bbb; text-align: left; padding: 4px 16px 4px 0">1</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <p style="font-size: 13px"></p>
                                                <p style="font-size: 13px">&nbsp;</p>
                                            </div>
                                        </div>
                                        <table id="email-actions" class="email-metadata" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; color: #505050">
                                            <tbody>
                                                <tr>
                                                    <td class="left" valign="top" style="font-size: 13px; padding-top: 8px; max-width: 45%; text-align: left"> <span class="email-list-item"><a href="http://wiki.javaforum.hu/display/JAVAFORUM/2012/06/08/Java7+-+java.util.Objects" style="color: #326ca6; text-decoration: none">View Online</a> </span> </td>
                                                    <td class="right" width="50%" valign="top" style="font-size: 13px; padding-top: 8px; text-align: right"> <span class="email-list-item"><a href="http://wiki.javaforum.hu/users/editmyemailsettings.action" style="color: #326ca6; text-decoration: none">Manage Notifications</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="http://wiki.javaforum.hu/users/viewmyemailsettings.action" style="color: #326ca6; text-decoration: none">Unsubscribe from all blog posts</a> </span> </td>
                                                </tr>
                                            </tbody>
                                        </table> </td>
                                </tr>
                            </tbody>
                        </table></td>
                </tr>
                <tr>
                    <td id="email-footer" align="center" style="font-size: 13px; padding: 0 16px 32px 16px; margin: 0"> <small style="font-size: 11px"> This message was sent by <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence">Atlassian Confluence</a> 4.2, the <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence/tour/enterprise-wiki.jsp">Enterprise Wiki</a> </small> </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>