<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://api.springnote.com">
  <identifier type="integer">2231980</identifier>
  <title>Effective &amp; Agile Java Generics</title>
  <relation_is_part_of type="integer">1160554</relation_is_part_of>
  <date_modified type="datetime">2008-12-18T08:52:44Z</date_modified>
  <uri>http://benelog.springnote.com/pages/2231980</uri>
  <date_created type="datetime">2008-12-04T21:25:43Z</date_created>
  <source>&lt;p style="text-align: right;"&gt;&#48376;&#47928; &#45236;&#50857;&#51012; &#51064;&#49604;&#54616;&#49892; &#48516;&#51008; &lt;a href="/pages/2231980?print=1" title="http://benelog.springnote.com/pages/2231980?print=1" class="external"&gt;&#50668;&#44592;&lt;/a&gt;&#47484; &#45572;&#47476;&#49884;&#44592; &#48148;&#46989;&#45768;&#45796;.&lt;/p&gt;
&lt;h4&gt;&#47928;&#49436;&#51221;&#48372;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#47141; : 2008&#45380; 12&#50900; 16&#51068; &#48260;&#51204; 1.0 &#51089;&#49457;&lt;/li&gt;
&lt;li&gt;&#51089;&#49457;&#51088; : &#51221;&#49345;&#54785;, (benelog[at]gmail[dot]com, &lt;a href="http://benelog.egloos.com/"&gt;http://benelog.egloos.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Generics&#44032; &#46308;&#50612;&#44036; &#53580;&#49828;&#53944; &#53076;&#46300;&#47484; &#53685;&#44284;&#49884;&#53020; &#48389;&#49884;&#45796;.&lt;/h3&gt;
&lt;p&gt;&amp;nbsp; &#50500;&#47000;&#50640; &#51080;&#45716; &#53580;&#49828;&#53944; 1~5&#44620;&#51648;&#51032;&amp;nbsp; &#53580;&#49828;&#53944; &#53076;&#46300;&#46308;&#51012; &#47784;&#46160; &#54620;&#48264;&#50640; &#53685;&#44284;&#49884;&#53412;&#45716; ListUtils.max&#47700;&#49436;&#46300;&#45716; &#50612;&#46523;&#44172; &#49440;&#50616;&#54616;&#44256; &#44396;&#54788;&#54644;&#50556; &#54624;&#44620;&#50836;?&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Generics&#47484; &#50024;&#48372;&#49888; &#48516;&#51060;&#46972;&#47732; &lt;a href="/pages/2231980/attachments/1026628?dummy=1229420647470" title="ListUtilsTest.java" class="attachment"&gt;ListUtilsTest.java&lt;/a&gt;&#47484; &#45796;&#50868; &#48155;&#51004;&#49492;&#49436; &#54620;&#48264; &#54400;&#50612; &#48372;&#49884;&#44592; &#48148;&#46989;&#45768;&#45796;. Collections.max()&#47484; &#50500;&#49884;&#45716; &#48516;&#46020; &#44536; &#47700;&#49548;&#46300;&#47484; &#52280;&#44256;&#54616;&#49884;&#51648; &#47560;&#49884;&#44256; &#51649;&#51217; &#47700;&#49436;&#46300;&#47484; &#47564;&#46308;&#50612; &#48372;&#49884;&#47732; &#51116;&#48120;&#51080;&#51004;&#49892; &#44161;&#45768;&#45796;. &#51228;&#50557;&#51312;&#44148;&#51008; &#45796;&#51020;&#44284; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;@SuppressWarnings("unchecked") &#47484; &#50416;&#51648; &#50506;&#44256;&#46020; Generics&#50640; &#45824;&#54620; warning&#51060; &#50630;&#44256;, Casting&#46020; &#54620;&#48264;&#46020; &#54616;&#51648; &#50506;&#50500;&#50556; &#54616;&#44256;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#52980;&#54028;&#51068; &#49884;&#51216;&#50640;&#49436; ListUtils.max &#47700;&#49548;&#46300;&#50640; Comparable &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44396;&#54788;&#54620; &#44061;&#52404;&#46308;&#51012; &#49939;&#51008; List&#44032; &#45336;&#50612;&#50728;&#45796;&#45716; &#44163;&#51012; &#44160;&#51613;&#54624; &#49688; &#51080;&#50612;&#50556; &#54620;&#45796;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void getNullIfEmptyList(){&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;List&amp;lt;Integer&amp;gt; numbers = new ArrayList&amp;lt;Integer&amp;gt;();&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;Integer max = ListUtils.max(numbers);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertThat(max,is(nullValue()));&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#53580;&#49828;&#53944; 1 :&amp;nbsp; &#48712; &#47532;&#49828;&#53944;&#44032; &#45336;&#50612;&#50724;&#47732; null&#44050; &#48152;&#54872;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void getMaxInteger(){&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;List&amp;lt;Integer&amp;gt; numbers = new ArrayList&amp;lt;Integer&amp;gt;();&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers.add(Integer.valueOf(1));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers.add(Integer.valueOf(2));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;Integer max = ListUtils.max(numbers);&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertThat(max,is(Integer.valueOf(2)));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#53580;&#49828;&#53944; 2 :&amp;nbsp; Integer&#44061;&#52404;&#51032; &#52572;&#45824;&#44050; &#44396;&#54616;&#44592;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void getMaxBigInteger(){&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;List&amp;lt;BigInteger&amp;gt; numbers = new ArrayList&amp;lt;BigInteger&amp;gt;();&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers.add(BigInteger.ZERO);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers.add(BigInteger.ONE);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;BigInteger max = ListUtils.max(numbers);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertThat(max,is(BigInteger.ONE));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#53580;&#49828;&#53944; 3 :&amp;nbsp; BigInteger&#44061;&#52404;&#51032; &#52572;&#45824;&#44050; &#44396;&#54616;&#44592;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void getMaxDate(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;java.sql.Date now = new java.sql.Date(new Date().getTime());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;java.sql.Date afterAWhile = new java.sql.Date(new Date().getTime()+6000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;em class="underline"&gt;&lt;strong&gt;List&amp;lt;java.sql.Date&amp;gt; dates = new ArrayList&amp;lt;java.sql.Date&amp;gt;();&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dates.add(now);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dates.add(afterAWhile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;em class="underline"&gt;&lt;strong&gt;java.sql.Date max = ListUtils.max(dates);&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertThat(max,is(afterAWhile));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#53580;&#49828;&#53944; 4: java.sql.Date &#44061;&#52404;&#51032; &#52572;&#45824;&#44050; &#44396;&#54616;&#44592;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void getMaxScheduledFuture() throws InterruptedException{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ScheduledFuture&amp;lt;?&amp;gt; after1Second = executor.schedule(getTask("first"),1,TimeUnit.SECONDS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ScheduledFuture&amp;lt;?&amp;gt; after2Seconds = executor.schedule(getTask("second"),2,TimeUnit.SECONDS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;List&amp;lt;ScheduledFuture&amp;lt;?&amp;gt;&amp;gt; futures = new ArrayList&amp;lt;ScheduledFuture&amp;lt;?&amp;gt;&amp;gt;();&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; futures.add(after1Second);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; futures.add(after2Seconds);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em class="underline"&gt;&lt;strong&gt;ScheduledFuture&amp;lt;?&amp;gt; max = ListUtils.max(futures);&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; long maxDelay = max.getDelay(TimeUnit.SECONDS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertThat(maxDelay,is(after2Seconds.getDelay(TimeUnit.SECONDS)));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(3000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertTrue(max.isDone());&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private Runnable getTask(final String message) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Runnable task = new Runnable(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return task;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#53580;&#49828;&#53944;5 : ScheduledFuture&#47484; &#44396;&#54788;&#54620; &#44061;&#52404;&#51032; &#52572;&#45824;&#44050; &#44396;&#54616;&#44592;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;(&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" class="external"&gt;java.util.concurrent.ScheduledFuture&lt;/a&gt;&amp;nbsp; API&#47928;&#49436; &#52280;&#51312;)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#54400;&#51060;&#50752; &#49444;&#47749;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&#53580;&#49828;&#53944; 1,2,3&#48264; &#44620;&#51648;&#51032; &#53076;&#46300;&#47564;&#51060;&#46972;&#47732; &#50500;&#47000;&#50752; &#44057;&#51060;&amp;nbsp;&#49440;&#50616;&#54616;&#49492;&#46020; &#46121;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public static &amp;lt;T extends Comparable&amp;lt;T&amp;gt;&amp;gt; T max(List&amp;lt;T&amp;gt; list)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944; 1: &#44036;&#45800;&#54620; max &#47700;&#49436;&#46300; &#49440;&#50616;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51060;&#47111;&#44172; &amp;lt;T extends Comparable&amp;lt;T&amp;gt;&amp;gt; &#52376;&#47100; Type parameter&#44032;&amp;nbsp;&#44536; &#51088;&#49888;&#51060; &#54252;&#54632;&#46108; &#54364;&#54788;&#51004;&#47196; &#44536; &#48276;&#50948;&#44032; &#49440;&#50616;&#46104;&#45716; &#44163;&#51012; recursive type bound&#46972;&#44256; &#54633;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Integer&#50752; BigDecimal&#51032; &#53364;&#47000;&#49828; &#49440;&#50616;&#51012; &#48372;&#47732; &#50500;&#47000;&#50752; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public final class Integer extends Number implements &lt;strong&gt;Comparable&amp;lt;Integer&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;public class BigInteger extends Number implements &lt;strong&gt;Comparable&amp;lt;BigInteger&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944; 2: Integer &#50752; BigInteger &#53364;&#47000;&#49828; &#49440;&#50616;&#48512;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#46160; &#53364;&#47000;&#49828; &#47784;&#46160; &#51088;&#49888;&#51032; &#53440;&#51077;&#51060; Parameterized type&#51004;&#47196; &#46308;&#50612;&#44036; Comparable &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44396;&#54788;&#54616;&#44256; &#51080;&#44592; &#46412;&#47928;&#50640; &#47532;&#49828;&#53944;3&#51032;&amp;nbsp;&#47700;&#49548;&#46300; &#49440;&#50616;&#51004;&#47196;&#46020; Integer&#45208; BigInteger&#44032; &#45812;&#44596; &#47532;&#49828;&#53944;&#47484; &#48155;&#51012; &#49688; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &#44536;&#47084;&#45208;&amp;nbsp; &#47532;&#49828;&#53944; 1&#51032; &#49440;&#50616;&#51004;&#47196;&#45716; &#53580;&#49828;&#53944;4,5&#50640; &#51080;&#45716; &#47700;&#49436;&#46300;&#50640;&#49436; &#52980;&#54028;&#51068; &#50640;&#47084;&#44032; &#45216; &#44163;&#51077;&#45768;&#45796;. &#44536; &#51060;&#50976;&#45716; &#45796;&#51020;&#44284; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&#53580;&#49828;&#53944;4&#51032; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html"&gt;java.sql.Date&lt;/a&gt;&#45716; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html"&gt;java.util.Date&lt;/a&gt;&#47484; &#49345;&#49549;&#54620; &#53364;&#47000;&#49828;&#51077;&#45768;&#45796;. &#44536;&#47088;&#45936; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html"&gt;java.sql.Date&lt;/a&gt;&#45716; &#46384;&#47196; comparesTo&#47700;&#49436;&#46300;&#47484; &#51116;&#51221;&#51032;&#54616;&#44256; &#51080;&#51648; &#50506;&#44256;, &#49345;&#50948;&#53364;&#47000;&#49828;&#51064; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html"&gt;java.util.Date&lt;/a&gt;&#50640; &#51080;&#45716; &#47700;&#49436;&#46300;&#47484; &#44536;&#45824;&#47196; &#50416;&#44256; &#51080;&#49845;&#45768;&#45796;. &#44536;&#47000;&#49436; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html"&gt;java.sql.Date&lt;/a&gt;&#45716; Comparable&amp;lt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html"&gt;java.sql.Date&lt;/a&gt;&amp;gt; &#54620; &#44163;&#51060; &#50500;&#45772; Comparable&amp;lt; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html"&gt;java.util.Date&lt;/a&gt;&amp;gt; &#47484; &#44396;&#54788;&#54620; &#44163;&#51060;&#46972;&#44256; &#48380; &#49688; &#51080;&#49845;&#45768;&#45796;. (&#46160; &#53364;&#47000;&#49828;&#51032; &#51060;&#47492;&#51060; &#44057;&#50500;&#49436; &#54844;&#46041;&#51060; &#46104;&#49892; &#49688;&#46020; &#51080;&#49845;&#45768;&#45796;. &lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2600965&amp;amp;CategoryNumber=001001003016003014" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2600965&amp;amp;CategoryNumber=001001003016003014" class="external"&gt;Java Puzzler&lt;/a&gt;&#50640;&#49436;&#45716; &#51060; &#46160; &#53364;&#47000;&#49828;&#51032; &#50696;&#47484; &#46308;&#47732;&#49436; &#51088;&#48148; &#54540;&#47019;&#54268; &#49444;&#44228;&#51088;&#44032; &#51060;&#47492;&#51012; &#51648;&#51004;&#47732;&#49436; &#44636;&#48737; &#51316; &#46319;&#54616;&#45796;&#44256; &#50640;&#49436;&#45716; &#50616;&#44553;&#54616;&#44256; &#51080;&#49845;&#45768;&#45796;.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#44536;&#47532;&#44256; &#53580;&#49828;&#53944;5&#51032; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" class="external"&gt;java.util.concurrent.ScheduledFuture&lt;/a&gt; &#51064;&#53552;&#54168;&#51060;&#49828;&#45716; Comparable&amp;lt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" class="external"&gt;ScheduledFuture&lt;/a&gt;&amp;gt;&#47484; &#44396;&#54788;&#54620; &#44163;&#51060; &#50500;&#45772;, &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" class="external"&gt;Delayed&lt;/a&gt;&#46972;&#45716; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#49345;&#49549;&#54620; &#44163;&#51060;&#44256;, &#51060; Delayed&#45716; Comparable&amp;lt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" class="external"&gt;Delayed&lt;/a&gt;&amp;gt;&#47484; &#49345;&#49549;&#54620; &#51064;&#53552;&#54168;&#51060;&#49828;&#51077;&#45768;&#45796;.&amp;nbsp; l&#47532;&#49828;&#53944; 3&#51032; &#51064;&#53552;&#54168;&#51060;&#49828; &#49440;&#50616;&#51012; &#48372;&#49884;&#47732; &#49789;&#44172; &#51060;&#54644;&#44032; &#46104;&#49892; &#44163;&#51077;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public interface &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" class="external"&gt;ScheduledFuture&lt;/a&gt;&amp;lt;V&amp;gt; extends Delayed, Future&amp;lt;V&amp;gt;&lt;/p&gt;
&lt;p&gt;public interface &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" class="external"&gt;Delayed&lt;/a&gt; extends Comparable&amp;lt;Delayed&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944; 3: &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledFuture.html" class="external"&gt;ScheduledFuture&lt;/a&gt; &#50752; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Delayed.htm" class="external"&gt;Delayed&lt;/a&gt; &#51064;&#53552;&#54168;&#51060;&#49828; &#49440;&#50616;&#48512;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51060;&#47088; &#44221;&#50864;&#46020; &#47784;&#46160; &#53685;&#44284;&#54624; &#49688; &#51080;&#44172; ListUtils.max()&#47700;&#49436;&#46300;&#47484; &#49440;&#50616;&#54616;&#44256; &#44396;&#54788;&#54616;&#47732; &#50500;&#47000;&#50752; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public class ListUtils {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(List&amp;lt;T&amp;gt; list){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T result = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(T each : list) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result==null) result = each;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(each.compareTo(result)&amp;gt;0) result = each;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944;4: ListUtils &#44396;&#54788;(&#45796;&#50868;&#47196;&#46300;: &lt;a href="/pages/2231980/attachments/1026734?dummy=1229420695325" title="ListUtils.java" class="attachment"&gt;ListUtils.java&lt;/a&gt;)&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;strong&gt;public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(List&amp;lt;T&amp;gt; list)&lt;/strong&gt; &#46972;&#45716; &#44596; &#47700;&#49436;&#46300; &#49440;&#50616;&#51077;&#45768;&#45796;. &#51060; &#49440;&#50616; &#50504;&#50640;&#45716; recursive type bound, wild card, upper bound, lower bound&#44032;&amp;nbsp; &#45796; &#46308;&#50612;&#44032; &#51080;&#49845;&#45768;&#45796;. &#51060; &#51221;&#46020; &#47700;&#49436;&#46300;&#47484; &#49444;&#44228;&#54624; &#49688; &#51080;&#50612;&#50556;&#51648;, Java generics&#47484; &#51228;&#45824;&#47196; &#50500;&#45716; &#44163;&#51060;&#46972;&#44256; &#54624; &#49688; &#51080;&#44192;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; bounded wild card&#47484; &#51201;&#50857;&#54616;&#45716; &#44592;&#51456;&#51008; Effective Java 2nd Edition&#50640; &#45208;&#50752; &#51080;&#45716; PECS(Producer-extends, Consumer-super)&#50896;&#52825;&#51012; &#44592;&#50613;&#54616;&#49884;&#47732; &#46020;&#50880;&#51060; &#46121;&#45768;&#45796;. &#50896;&#47000; &lt;a href="http://engdic.daum.net/dicen/contents.do?query1=ED00866730" class="external" title="http://engdic.daum.net/dicen/contents.do?query1=ED00866730"&gt;PECS&#51032; &#46907;&lt;/a&gt;&#51008; &#44032;&#49844; &#44540;&#50977;&#51060;&#46972;&#45716;&#44400;&#50836;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;&amp;lt;T extends Comparable....&lt;/strong&gt; &#48512;&#48516;&lt;/h5&gt;
&lt;p&gt;&amp;nbsp; Comparable&#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44396;&#54788;&#54620; &#53364;&#47000;&#49828;&#44032; &#44536; &#45824;&#49345;&#51060;&#50612;&#50556; max&#45236;&#48512;&#50640;&#49436; Comparable.compareTo&#47484; &#51060;&#50857;&#54644;&#49436; &#52572;&#45824;&#44050;&#51012; &#44396;&#54624; &#49688; &#51080;&#49845;&#45768;&#45796;. &#44536;&#47000;&#49436; &#53440;&#51077; T&#45716; T extends Comparable&#51060; &#46104;&#50612;&#50556; &#54633;&#45768;&#45796;. PECS&#50896;&#52825;&#51004;&#47196;&#46020; &#47532;&#53556;&#44050;&#51004;&#47196; &#49373;&#49328;&#46104;&#45716; (Producer) &#53440;&#51077;&#51060; T&#51060;&#48064;&#47196; extends&#47484; &#49789;&#44172; &#50672;&#49345;&#54616;&#49892; &#49688; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Comparable&amp;lt;? super T&amp;gt; &#48512;&#48516;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; max &#47700;&#49436;&#46300; &#45236;&#48512;&#50640;&#49436; &#53440;&#51077; T&#45716; Comparable.compareTo(T o)&#47700;&#49436;&#46300; &#46244;&#50640; &#54028;&#46972;&#48120;&#53552;&#47196; &#45336;&#50612;&#44032;&#45716;, &#49548;&#48708;&#46104;&#45716;(Consumer) &#45824;&#49345;&#51004;&#47196; &#50416;&#51060;&#44592;&#50640; PECS&#50896;&#52825;&#51004;&#47196; super&#47196; &#50672;&#44208;&#49884;&#53420; &#49688; &#51080;&#49845;&#45768;&#45796;. &#53580;&#49828;&#53944;5&#51032; &#53076;&#46300;&#47484; &#50696;&#47196; &#48372;&#47732;, ScheduledFuture&#45716; ScheduledFuture&#51032; &#49345;&#50948; &#51064;&#53552;&#54168;&#51060;&#49828;&#51064; Delayed&#44032; Comparable&#51032; Parameterized type&#51004;&#47196; &#45336;&#50612;&#44032;&#45716; Comparable&amp;lt;Delayed&amp;gt;&#54805;&#53468;&#51032; Comparable&#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#49345;&#49549;&#54616;&#44256; &#51080;&#49845;&#45768;&#45796;.&amp;nbsp; T&#47484; ScheduledFuture&#47196; &#48420;&#51012; &#46412; Comparable&amp;lt;? super T&amp;gt;&#45716; Comparable&amp;lt;Delayed&amp;gt;&#50752; &#51096; &#47582;&#50500;&#46504;&#50612;&#51665;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51060; &#47532;&#49828;&#53944;4&#51032; ListUtils.max &#47700;&#49436;&#46300;&#45716; &lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002" class="external" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002"&gt;Effective Java 2nd Edition&lt;/a&gt;&#51032; Item28&#50640; &#45208;&#50724;&#45716; &#53076;&#46300;&#47484; &#48372;&#44256;&#49436; &#50557;&#44036; &#48320;&#44221;&#51012; &#54644; &#48376; &#44163;&#51077;&#45768;&#45796;. &#50896;&#47000; &#52293;&#50640; &#45208;&#50724;&#45716; &#53076;&#46300;&#45716; &#50500;&#47000;&#50752; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(List&amp;lt;? extends T&amp;gt; list){&lt;br /&gt;
&amp;nbsp; Iterator&amp;lt;? extends T&amp;gt; i = list.iterator();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;T result = i.next();&lt;br /&gt;
&amp;nbsp; while(i.hasNext()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; T t = i.next();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (t.compareTo(result)&amp;gt;0) result = t;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944;5: Effective Java 2nd Edition&#50640; &#51080;&#45716; max&#47700;&#49436;&#46300;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#47700;&#49436;&#46300; &#49440;&#50616;&#51060; &lt;em class="underline"&gt;&lt;strong&gt;public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(List&amp;lt;? extends T&amp;gt; list)&lt;/strong&gt;&lt;/em&gt;&#47196; &#50696;&#51228;&#48372;&#45796; &#45908; &#45720;&#50612;&#45212; &#48512;&#48516;&#51060; &#51080;&#49845;&#45768;&#45796;. &#45149;&#50640; &#51080;&#45716; List&amp;lt;? extends T&amp;gt;&#44032; &#52628;&#44032;&#46108; &#44163;&#51077;&#45768;&#45796;. &#51060; &#48512;&#48516;&#51008; PECS&#50896;&#52825;&#50640; &#46384;&#47476;&#47732; List&#44061;&#52404;&#47196;&#48512;&#53552; T&#47484; &#49373;&#49328;(Producer)&#54644; &#50724;&#44592; &#46412;&#47928;&#50640; ? extends T&#47196; &#54616;&#45716; &#44163;&#51060; &#51201;&#51208;&#54644; &#48372;&#51060;&#45716; &#54633;&#45768;&#45796;. &#44536;&#47084;&#45208; &#53580;&#49828;&#53944;1~5&#51032; &#53076;&#46300;&#50640;&#49436;&#45716; List&amp;lt;T&amp;gt;&#47564;&#51004;&#47196;&#46020; &#52980;&#54028;&#51068;&#47084;&#44032; &#49688;&#54665;&#54616;&#45716; &#54805;&#52628;&#47200;(type inference)&#50640; &#47928;&#51228;&#44032; &#50630;&#50632;&#44592;&#50640; &#51228;&#44032; &#47564;&#46304; &#53076;&#46300;&#51064; &#47532;&#49828;&#53944;4&#50640;&#45716; &#52628;&#44032;&#54616;&#51648;&#45716; &#50506;&#50520;&#49845;&#45768;&#45796;. &#52980;&#54028;&#51068;&#47084;&#44032; &#49688;&#54665;&#54616;&#45716; Type inference&#45716; &#44361;&#51109;&#55176; &#48373;&#51105;&#54616;&#44256;, Java Language Spec&#50640;&#49436; 16&#54168;&#51060;&#51648;&#45208; &#52264;&#51648;&#54620;&#45796;&#44256; &#54633;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#44536;&#47532;&#44256;, &#47532;&#49828;&#53944;5&#50640;&#49436;&#45716; &#44600;&#51060;&#44032; 0&#51064; List&#44032; &#45336;&#50612;&#44036; &#44050;&#51068; &#46412;&#45716; &#52395;&#48264;&#51704; i.next();&#50640;&#49436; NoSuchElementException&#51012; &#45236;&#44172; &#46104;&#50612; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max%28java.util.Collection%29" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max(java.util.Collection)" class="external"&gt;java.util.Collections.max&lt;/a&gt;&#47700;&#49436;&#46300;&#50640;&#49436;&#46020; &#44057;&#51008; &#44208;&#44284;&#44032; &#45208;&#50724;&#45716; &#44163;&#51004;&#47196; &#48372;&#50500;&#49436;, &#50976;&#49324;&#54620; &#44396;&#54788;&#48169;&#49885;&#51060; &#50416;&#51064; &#44163;&#51004;&#47196; &#52628;&#52769;&#46121;&#45768;&#45796;. &#51228;&#44032; &#47564;&#46304; &#47928;&#51228;&#50640;&#49436;&#45716; Collection.max&#50752; &#50557;&#44036; &#45796;&#47480; &#48512;&#48516;&#51012; &#47564;&#46308;&#50612; &#48372;&#44256; &#49910;&#50612;&#49436; &#44600;&#51060;&#44032; 0&#51068; list&#44032; &#50732; &#46412;&#45716; null&#51012; &#48152;&#54872;&#54616;&#45716; &#48169;&#49885;&#51004;&#47196; &#48148;&#44984;&#50612; &#48372;&#50520;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#44536;&#47111;&#45796;&#47732; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max%28java.util.Collection%29" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max(java.util.Collection)" class="external"&gt;java.util.Collections.max&lt;/a&gt;&#51032; &#47700;&#49436;&#46300; &#49884;&#44536;&#45768;&#52376;&#45716; &#50612;&#46523;&#44172; &#46104;&#50612; &#51080;&#51012;&#44620;&#50836;?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;static &amp;lt;T extends Object &amp;amp; Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(Collection&amp;lt;? extends T&amp;gt; coll)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944;6: &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max%28java.util.Collection%29" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#max(java.util.Collection)" class="external"&gt;java.util.Collections.max&lt;/a&gt; &#47700;&#49436;&#46300;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51068;&#45800; &#45824;&#49345;&#51060; List&#48372;&#45796; &#54869;&#51109;&#46108; Collection&#51060;&#45768; Parameter&#44032; Collection&#51064; &#44163;&#51060; &#45576;&#50640; &#46308;&#50612; &#50741;&#45768;&#45796;. &#44536;&#47088;&#45936; T&#51032; &#51228;&#50557;&#51312;&#44148;&#51060; &amp;lt;T extends Object &amp;amp; Comparable&amp;lt;? super T&amp;gt;&amp;gt;&#47196; &#49440;&#50616;&#46104;&#50612; &#51080;&#45716; &#44163;&#51060; &#47532;&#49828;&#53944;5&#51032; &#53076;&#46300;&#48372;&#45796; 'Object &amp;amp;' &#48512;&#48516;&#51060; &#45908; &#46308;&#50612;&#44032; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51060;&#44163;&#51008; java1.4&#50752;&#51032; &#54616;&#50948; &#54840;&#54872;&#49457;&#51012; &#50948;&#54620; &#44163;&#51077;&#45768;&#45796;. Java&#50640;&#49436;&#45716; &#54616;&#50948;&#54840;&#54872;&#49457; &#51648;&#50896; &#46412;&#47928;&#50640; &#52980;&#54028;&#51068; &#49884;&#50640; Generics&#44288;&#47144; &#51221;&#48372;&#47484; &#47784;&#46160; &#44160;&#49324;&#54620; &#54980;&#50640;&#45716; &#49892;&#51228;&#47196;&#45716; Generics &#51221;&#48372;&#44032; &#51204;&#54784; &#50630;&#45716; &#48148;&#51060;&#53944;&#53076;&#46300;&#47484; &#49373;&#49457;&#54616;&#44172; &#46104;&#50612; &#51080;&#49845;&#45768;&#45796;. &#44536;&#47000;&#49436; &#47532;&#49828;&#53944;5&#52376;&#47100; &#47700;&#49436;&#46300;&#47484; &#49440;&#50616;&#54664;&#51012; &#46412;&#50640;&#45716; &#47088;&#53440;&#51076;&#49884;&#50640;&#45716; &#47532;&#49828;&#53944; 7&#44284; &#44057;&#51008; &#53076;&#46300;&#50752; &#44057;&#51008; &#48148;&#51060;&#53944;&#53076;&#46300;&#44032; &#49373;&#49457;&#46121;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;static Comparable max(Collection c)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944; 7: &#47532;&#49828;&#53944;5&#51032; &#47700;&#49436;&#46300; &#49440;&#50616;&#51060; &#51088;&#47308;&#54805; &#51648;&#50864;&#44592;&#44032; &#49688;&#54665;&#46108; &#46244;&#51032; &#47784;&#49845;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#44536;&#47084;&#45208; &#51060;&#51204; &#48260;&#51204;&#50640;&#49436;&#51032; max&#47700;&#49436;&#46300;&#51032; &#47784;&#49845;&#51008; &#45796;&#51020;&#44284; &#44057;&#50520;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;public static Object max(Collection c)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944;8: Java5 &#51060;&#51204;&#51032; Collections.max &#47700;&#49436;&#46300;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&#46384;&#46972;&#49436; &#47532;&#49828;&#53944;7&#52376;&#47100; Comparable&#51012; &#48152;&#54872;&#54616;&#44172; &#46108;&#45796;&#47732; &#51060;&#44163;&#51008; &#51060;&#51204;&#48260;&#51204;&#51032; &#47700;&#49436;&#46300; Signature&#47484; &#48148;&#45012;&#48260;&#47536; &#44163;&#51060; &#46104;&#48064;&#47196; &#54616;&#50948;&#48260;&#51204;&#50640;&#49436; &#52980;&#54028;&#51068;&#46108; &#53076;&#46300;&#50640;&#49436; Collections.max&#47484; &#54840;&#52636;&#54624; &#46412; &#50640;&#47084;&#47484; &#48156;&#49373;&#49884;&#53412;&#44172; &#46121;&#45768;&#45796;. &#44536;&#47000;&#49436; Object &amp;amp;&#51060; &#45908; &#52628;&#44032;&#46108; &#44163;&#51060;&#51424;. (Agile Java&#51032; Lesson 12 &#51473; Additional Bounds&#50640;&#49436; &#52280;&#51312;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#50668;&#44592;&#44620;&#51648; &#51060;&#54644;&#54616;&#49512;&#51004;&#47732;, &#49892;&#47924;&#50640;&#49436; &#50612;&#46500; Generics &#44288;&#47144; &#53076;&#46300;&#47484; &#48400;&#46020; &#51060;&#51228; &#49772;&#50892;&#48372;&#51060;&#49892; &#44161;&#45768;&#45796;.&lt;/p&gt;
&lt;h3&gt;Generics&#51032; &#54364;&#54788;&#47141;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &#54616;&#45208;&#51032; &#50696;&#51228;&#47196; Generics&#51032; &#47566;&#51008; &#48512;&#48516;&#51012; &#49444;&#47749;&#54616;&#44592; &#50948;&#54644;&#49436; &#45796;&#49548; &#48373;&#51105;&#54620; &#53076;&#46300;&#47484; &#48372;&#50668;&#46300;&#47160;&#49845;&#45768;&#45796;. &#54841;&#49884;&#45208; Generics&#47484; &#51060;&#51228; &#47561; &#51201;&#50857;&#54616;&#49884;&#44256; &#49910;&#51004;&#49888; &#48516;&#46308;&#51032; &#47560;&#51020;&#51012; &#50612;&#46177;&#44172; &#54620; &#44163;&#51060; &#50500;&#45772;&#44032; &#44145;&#51221;&#51060; &#46104;&#44592;&#46020;&#54633;&#45768;&#45796;. &#44536;&#47084;&#45208; &#45824;&#48512;&#48516;&#51032; Generics&#51201;&#50857; &#49324;&#47168;&#45716; &#55016;&#50476; &#44036;&#45800;&#54616;&#44256;, &#53945;&#55176; Collection &#49440;&#50616;&#50640; genercics&#47484; &#54876;&#50857;&#54616;&#45716; &#51221;&#46020;&#45716; &#50612;&#47157;&#51648; &#50506;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Generics&#45716; &#52980;&#54028;&#51068;&#49884;&#51216;&#50640;&#49436;&#51032; &#50640;&#47084;&#44160;&#52636; &#50689;&#50669;&#51012; &#45331;&#54784;&#51480;&#49436; &#48372;&#45796; &#51060;&#47480; &#49884;&#51216;&#50640; &#48260;&#44536;&#47484; &#51105;&#51012; &#49688; &#51080;&#44172; &#54644;&#51452;&#44256;, &#53076;&#46300;I&#51032; &#49444;&#47749;&#47141;&#51012; &#45458;&#50668;&#51480;&#49436; API&#49324;&#50857;&#51088;&#46308;&#51060; &#48372;&#45796; &#49789;&#44172; API&#47484; &#50424; &#49688; &#51080;&#44172; &#54644;&#51469;&#45768;&#45796;. &#52980;&#54028;&#51068;&#53440;&#51077;&#51032; &#50640;&#47084;&#52404;&#53356; &#45733;&#47141;&#51008; &#50948;&#51032; &#50696;&#51228;&#47484; &#53685;&#54644;&#49436; &#49444;&#47749;&#54664;&#51004;&#45768;, &#54364;&#54788;&#47141;&#50640; &#45824;&#54644;&#49436;&#46020; &#51228;&#44032; &#44202;&#51008; &#49324;&#47168;&#47484; &#51060;&#50556;&#44592;&#54644; &#48380;&#44620; &#54633;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#47751;&#45380;&#51204;&#50640; &#51200;&#45716; Java &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#50641;&#49472;&#54028;&#51068;&#47196; &#47564;&#46300;&#45716; &#49328;&#52636;&#47932; &#51089;&#50629;&#51012; &#54616;&#44256; &#51080;&#50632;&#45716;&#45936;, &#47532;&#53556;&#53440;&#51077;&#51060; List&#51064; &#47700;&#49436;&#46300;&#46308;&#51008; &#44536; &#50504;&#50640; &#50612;&#46500; &#44061;&#52404;&#46308;&#51060; &#46308;&#50612;&#51080;&#45716;&#51648; &#47700;&#49436;&#46300; &#49884;&#44536;&#45768;&#52376;&#47564;&#51004;&#47196;&#45716; &#54364;&#54788;&#54624; &#49688; &#50630;&#50612;&#49436; &#45813;&#45813;&#54664;&#45912; &#51201;&#51060; &#51080;&#50632;&#49845;&#45768;&#45796;. &#44536;&#47000;&#49436; &#50500;&#50696; List&#45824;&#49888; &#48176;&#50676;&#51012; &#50424;&#44620;&#46020; &#44256;&#48124;&#54616;&#45796;&#44032; List&#44032; &#44032;&#51652; &#54200;&#51032;&#49457;&#46308;&#51012; &#48260;&#47540; &#49688;&#44032; &#50630;&#50612;&#49436; List&#47484; &#50416;&#44256; &#46384;&#47196; &#47928;&#49436;&#50640; &#44536; &#50504;&#50640; &#50612;&#46500; &#44061;&#52404;&#44032; &#46308;&#50612;&#44032; &#51080;&#45716;&#51648;&#47484; &#51201;&#51012; &#49688; &#48150;&#50640; &#50630;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap%28%29" class="external" title="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap()"&gt;javax.servlet.ServletRequest.getParameterMap()&lt;/a&gt;&#47484; &#49324;&#50857;&#54624; &#46412;&#45716; API&#49324;&#50857;&#51088;&#47196;&#49436; &#50500;&#49772;&#50880;&#51012; &#45712;&#44808;&#50632;&#49845;&#45768;&#45796;. API&#47928;&#49436;&#47484; &#48372;&#47732; &#51060; &#47700;&#49436;&#46300;&#44032; &#48152;&#54872;&#54616;&#45716; Map&#50640;&#45716; key&#47196; String&#51060;, value&#47196; String&#48176;&#50676;&#51060; &#46308;&#50612;&#44032; &#51080;&#45716; &#44163;&#51004;&#47196; &#49444;&#47749;&#46104;&#50612; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img title="getParametersMap.GIF" class="attachment" src="/pages/2231980/attachments/1026840" alt="getParametersMap.GIF" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&#51200;&#45716; &#52376;&#51020;&#50640; &#51060; &#47928;&#49436;&#47484; &#50504; &#48372;&#44256; key&#44032; String, &#44050;&#51060; &#54616;&#45208;&#51068; &#46412;&#45716; &#44536;&#45285; String, &#44050;&#51060; 2&#44060; &#51060;&#49345;&#51060;&#47732; String&#48176;&#50676;&#51060; &#46308;&#50612;&#44032; &#51080;&#51648; &#50506;&#51012;&#44620;&#54616;&#45716; &#52628;&#52769;&#51012; &#48148;&#53461;&#51004;&#47196; &#54620; &#53076;&#46300;&#47484; &#51676;&#49436; &#47751;&#48264; &#50640;&#47084;&#47484; &#45256;&#50632;&#50632;&#49845;&#45768;&#45796;. &#44208;&#44397; API&#47928;&#49436;&#47484; &#48372;&#44256;&#49436; &#50612;&#46500; &#54805;&#49885;&#51004;&#47196; &#51088;&#47308;&#44032; &#46308;&#50612;&#44032; &#51080;&#45716;&#51648; &#50508;&#44172; &#46104;&#50612;&#51080;&#49845;&#45768;&#45796;. &#51060; &#47700;&#49548;&#46300;&#51032; &#47532;&#53556;&#53440;&#51077;&#51060; Map&amp;lt;String,String[]&amp;gt;&#44284; &#44057;&#51060; &#49440;&#50616;&#46104;&#50612; &#51080;&#50632;&#45796;&#47732;, &#47928;&#49436;&#47484; &#50504; &#48372;&#44256;&#46020;, Runtime &#50640;&#47084;&#47484; &#50504; &#44202;&#44256;&#46020; &#48148;&#47196; &#50732;&#48148;&#47480; &#51088;&#47308;&#54805;&#51004;&#47196; &#49324;&#50857;&#51060; &#44032;&#45733;&#54664;&#51012; &#44163;&#51077;&#45768;&#45796;. &#45208;&#51473;&#50640; &#51200;&#45716; &#51060; &#47700;&#49436;&#46300;&#47484; &#54840;&#52636;&#54616;&#45716; &#48512;&#48516;&#51012; &#50500;&#47000;&#50752; &#44057;&#51060; &#44048;&#49912;&#45716; &#48512;&#48516;&#51012; &#45347;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@SuppressWarnings("unchecked")&lt;br /&gt;
Map&amp;lt;String,String[]&amp;gt; requestMap = request.getParameterMap();&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align: center;"&gt;&#47532;&#49828;&#53944;9:&amp;nbsp; &lt;a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap%28%29" class="external" title="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap()"&gt;javax.servlet.ServletRequest.getParameterMap()&lt;/a&gt; &#47700;&#49436;&#46300;&#47484; Generics&#47484; &#51060;&#50857;&#54620; &#53076;&#46300;&#47196; &#44048;&#49912;&#44592;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; @SuppressWarnings("unchecked")&#51008; &#50612;&#51796; &#49688; &#50630;&#45716; &#44221;&#50864;&#50640;&#47564; &#50024;&#50556; &#54616;&#44256;, &#50424; &#46412;&#46020; &#53364;&#47000;&#49828; &#45800;&#50948;, &#47700;&#49436;&#46300; &#45800;&#50948;&#44032; &#50500;&#45772; &#51060;&#47088; &#52572;&#49548; &#46972;&#51064; &#45800;&#50948;&#47196; &#50024;&#50556; &#54633;&#45768;&#45796;. (&lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002" class="external" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002"&gt;Effective Java 2nd Edition&lt;/a&gt; Item 24&#52280;&#51312;) &#51060; &#44221;&#50864;&#45716; Generics&#51648;&#50896;&#54616;&#51648; &#50506;&#45716; &#50808;&#48512; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#54840;&#52636;&#54616;&#45716; &#44163;&#51060;&#46972;&#49436; &#48520;&#44032;&#54588;&#54620; &#44221;&#50864;&#51060;&#44256;, &#54805;&#50640; &#45824;&#54644;&#49436;&#45716; API&#47928;&#49436;&#50640; &#47749;&#49884;&#46108; &#45236;&#50857;&#46972;&#49436; &#51060;&#47111;&#44172; @SuppressWarnings&#51012; &#49440;&#50616;&#54644;&#46020; &#47928;&#51228;&#44032; &#50630;&#49845;&#45768;&#45796;. &#54596;&#50836;&#50640; &#46384;&#46972;&#49436; &#51060; requestMap&#51012; &#47532;&#53556;&#54644; &#51456;&#45796;&#47732; &#44536;&#44163;&#51012; &#50416;&#45716; &#53076;&#46300;&#50640;&#49436;&#45716; &#45908; &#51060;&#49345; &#51060; &#50504;&#50640; &#47924;&#50631;&#51060; &#46308;&#50612;&#51080;&#45716;&#51648; &#47928;&#49436;&#47484; &#52286;&#50500;&#48372;&#51648; &#50506;&#50500;&#46020; &#46121;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &#51060;&#47111;&#46319; Generics&#47484; &#51096; &#54876;&#50857;&#54644;&#48372;&#47732; &#51060;&#44163;&#51060; &#44316;&#55176; &#53076;&#46300;&#47484; &#48373;&#51105;&#54616;&#44172; &#47564;&#46300;&#45716; &#44163;&#51060; &#50500;&#45768;&#44256;, API&#49444;&#44228;&#51088;&#50752; &#49324;&#50857;&#51088;&#46308;&#50640;&#44172; &#47566;&#51008; &#46020;&#50880;&#51060; &#46108;&#45796;&#45716; &#44163;&#51012; &#45712;&#45180;&#49892; &#44163;&#51077;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Sun&#50640;&#49436;&#45716; &#44277;&#49885;&#51201;&#51004;&#47196; &lt;a href="http://java.dzone.com/articles/rip%E2%80%A6jdk-14" title="http://java.dzone.com/articles/rip%E2%80%A6jdk-14" class="external"&gt;JDK1.4&#51032; &#49436;&#48708;&#49828; &#44592;&#44036;&#51032; &#51333;&#47308;&lt;/a&gt;&#47484; &#49440;&#50616;&#54664;&#45796;&#44256; &#54633;&#45768;&#45796;. &#51060; &#49884;&#44592;&#50640; &#54788;&#51109;&#50640;&#49436; Generics&#47484; &#54876;&#50857;&#54624; &#51460; &#50500;&#45716; Java &#44060;&#48156;&#51088;&#51032; &#49688;&#45716; &#47566;&#51060; &#48512;&#51313;&#54644; &#48372;&#51077;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#44288;&#47144;&#51088;&#47308; &#47784;&#51020;&lt;/h3&gt;
&lt;h4&gt;Generics &#44288;&#47144;&#51088;&#47308;&lt;/h4&gt;
&lt;p&gt;&#51060; &#54252;&#49828;&#53944;&#45716; &#51452;&#47196; &#50500;&#47000; &#46160; &#52293;&#51012; &#48372;&#47732;&#49436; &#50619;&#51008; &#51221;&#48372;&#47484; &#53685;&#54644; &#51089;&#49457;&#46104;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002" class="external" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002"&gt;Effective Java 2nd Edition&lt;/a&gt; : &lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002" class="external" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002"&gt;&lt;/a&gt;Chater 4: Item23 ~ Item 29&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=1534922&amp;amp;CategoryNumber=002001026004" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=1534922&amp;amp;CategoryNumber=002001026004" class="external"&gt;Agile Java&lt;/a&gt; : &lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=1534922&amp;amp;CategoryNumber=002001026004" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=1534922&amp;amp;CategoryNumber=002001026004" class="external"&gt;&lt;/a&gt;Lesson 14&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; Agile java&#52376;&#47100; &#53580;&#49828;&#53944; &#53076;&#46300;&#47484; &#47676;&#51200; &#48372;&#50668;&#51452;&#50632;&#44256; , ListUtils.max &#47700;&#49436;&#46300;&#45716; Effective Java&#51032; &#45236;&#50857;&#51012; &#51452;&#47196; &#52280;&#51312;&#54644;&#49436; &#51089;&#49457;&#54664;&#49845;&#45768;&#45796;. Effective Java&#50640;&#49436;&#45716; ScheduledFuture&#51032; &#44221;&#50864;&#50640; &#45824;&#54644;&#49436; &#50616;&#44553;&#47564; &#46104;&#50612; &#51080;&#44256; &#50696;&#51228;&#53076;&#46300;&#44032; &#50630;&#45716; &#44163;&#51060; &#50500;&#49772;&#50892;&#49436; &#53580;&#49828;&#53944;5&#51032; &#53076;&#46300;&#47484; &#51089;&#49457;&#54664;&#44256;, &#48708;&#49847;&#54620; &#49324;&#47168;&#51032; &#48372;&#45796; &#52828;&#49689;&#54620; &#53364;&#47000;&#49828;&#47484; &#52286;&#45796;&#44032;&amp;nbsp; Agile java&#50640;&#49436; java.sql.Date &#53364;&#47000;&#49828;&#44032; &#50696;&#51228;&#50640; &#47566;&#51060; &#50416;&#51064; &#44163;&#51012; &#48372;&#44256; &#53580;&#49828;&#53944;4&#47484; &#52628;&#44032;&#54664;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002" class="external" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2416238&amp;amp;CategoryNumber=002"&gt;Effective Java 2nd Edition&lt;/a&gt; &#50640; &#54252;&#54632;&#46108; &#45236;&#50857; &#51473; Java5 &#44288;&#47144; &#45236;&#50857;&#51008; Joshua Bloch&#51060; &#54664;&#45912; &#48156;&#54364;&#50640; &#51096; &#50836;&#50557;&#46104;&#50612; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://developers.sun.com/learning/javaoneonline/2006/coreplatform/TS-1512.pdf" class="external" title="http://developers.sun.com/learning/javaoneonline/2006/coreplatform/TS-1512.pdf"&gt;Effective Java Reloaded, JavaOne Conference 2006&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://javapolis.libsyn.com/index.php?post_id=380974" title="http://javapolis.libsyn.com/index.php?post_id=380974" class="external"&gt;Effective Java Reloaded - 2008&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&#44536;&#50808; Generics&#50640; &#44288;&#54620; &#51088;&#47308;&#46308;&#51032; &#47553;&#53356;&#45716; &#50500;&#47000;&#50752; &#44057;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf" title="http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf" class="external"&gt;Genercis tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mkseo.pe.kr/blog/?p=1691" title="http://mkseo.pe.kr/blog/?p=1691" class="external"&gt;Summary on some java generics presentations/postings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;a href="http://www.ibm.com/developerworks/kr/library/j-jtp04298.html" title="http://www.ibm.com/developerworks/kr/library/j-jtp04298.html" class="external"&gt;&#51088;&#48148; &#51060;&#47200;&#44284; &#49892;&#49845;: &#51228;&#45348;&#47533;&#49828; &#54644;&#48512;, Part 1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://whiteship.me/1932" title="http://whiteship.me/1932" class="external"&gt;Generic &#54057;&#53664;&#47532; &#47700;&#49548;&#46300;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/kr/library/j-jtp07018.html" title="http://www.ibm.com/developerworks/kr/library/j-jtp07018.html" class="external"&gt;&#51088;&#48148; &#51060;&#47200;&#44284; &#49892;&#49845;: &#51228;&#45348;&#47533;&#49828; &#54644;&#48512;, Part 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gafter.blogspot.com/2006/12/super-type-tokens.html" title="http://gafter.blogspot.com/2006/12/super-type-tokens.html" class="external"&gt;Super Type Tokens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp01255.html" title="http://www.ibm.com/developerworks/java/library/j-jtp01255.html" class="external"&gt;Generics gotchas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://whiteship.tistory.com/1614" title="http://whiteship.tistory.com/1614" class="external"&gt;Generic &#47700;&#53440;&#45936;&#51060;&#53552; &#54876;&#50857;&#54616;&#44592;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&#53580;&#49828;&#53944; &#53076;&#46300; &#51089;&#49457; &#44288;&#47144;&#51088;&#47308;&lt;/h4&gt;
&lt;p&gt;&#54841;&#49884;&#45208; &#50948;&#50640; &#50416;&#51064; Junit4 &#48169;&#49885;&#51032; Test annotation&#51060;&#45208; assertThat &#47700;&#49548;&#46300;&#44032; &#51061;&#49689;&#54616;&#49884;&#51648; &#50506;&#51004;&#49888; &#48516;&#46308;&#51008; &#50500;&#47000; &#51088;&#47308;&#47484; &#52280;&#44256;&#54616;&#49884;&#44592; &#48148;&#46989;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://younghoe.info/110" title="JUnit 3.8&#50640;&#49436; JUnit 4, TestNG &#54876;&#50857;&#51004;&#47196;" class="external"&gt;JUnit 3.8&#50640;&#49436; JUnit 4, TestNG &#54876;&#50857;&#51004;&#47196;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://whiteship.tistory.com/1739" title="http://whiteship.tistory.com/1739" class="external"&gt;JUnit 4.4&#50640; &#52628;&#44032;&#46108; assertThat()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://whiteship.me/1799" title="http://whiteship.me/1799" class="external"&gt;assertThat()&#51004;&#47196; null &#50668;&#48512; &#54869;&#51064;&#54616;&#44592;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#44536;&#47532;&#44256; Eclipse&#47484; &#49324;&#50857;&#54644;&#49436; Junit4&#47484; &#49324;&#50857;&#54624; &#46412; &#44032;&#51109; &#44480;&#52270;&#51008; &#51216;&#51064; Ctrl+Shift+O&#47484; &#45572;&#47476;&#47732; static import&#51032; *&#44620;&#51648;&#46020; &#45796; &#54204;&#52432;&#51648;&#45716; &#54788;&#49345;&#51008; &#50500;&#47000;&#50752; &#51088;&#47308;&#47484; &#52280;&#44256;&#54616;&#49492;&#49436; Eclipse &#49444;&#51221;&#51012; &#48148;&#44984;&#49884;&#47732; &#51328; &#45908; &#54200;&#54616;&#49884;&#44172; &#53076;&#46377;&#54616;&#49892; &#49688; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gleamynode.net/articles/1533/fixing-eclipse-organize-imports-annoyance-for-static-imports" title="http://gleamynode.net/articles/1533/fixing-eclipse-organize-imports-annoyance-for-static-imports" class="external"&gt;Fixing Eclipse 'Organize Imports' Annoyance For Static Imports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://whiteship.tistory.com/1416" title="Eclipse&#50640;&#49436; Static Import &#54200;&#54616;&#44172; &#50416;&#47140;&#47732;" class="external"&gt;Eclipse&#50640;&#49436; Static Import &#54200;&#54616;&#44172; &#50416;&#47140;&#47732;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Concurrent &#44288;&#47144;&#51088;&#47308;&lt;/h4&gt;
&lt;p&gt;Effective Java&#50640;&#49436; &#50616;&#44553;&#54620; ScheduledFuture&#47484; &#51060;&#50857;&#54620; &#50696;&#51228;&#53076;&#46300;&#47484; &#47564;&#46308;&#45796; &#48372;&#45768; Concurrent&#44288;&#47144; API&#46308;&#51060; &#47751;&#44060; &#54252;&#54632;&#46104;&#50632;&#49845;&#45768;&#45796;. &#44536; API&#46308;&#50640; &#44288;&#49900;&#51060; &#51080;&#51004;&#49888; &#48516;&#51008; &#50500;&#47000; &#51088;&#47308;&#47484; &#52280;&#51312;&#54616;&#49884;&#47732; &#46121;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=3015162&amp;amp;CategoryNumber=001001003016003014" title="http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=3015162&amp;amp;CategoryNumber=001001003016003014" class="external"&gt;&#51088;&#48148; &#48337;&#47148;&#54532;&#47196;&#44536;&#47000;&#48141; :&lt;/a&gt; 6&#51109; &#51089;&#50629;&#49892;&#54665;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#44288;&#47144; API &#47928;&#49436;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Executors.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Executors.html"&gt;java.util.concurrent.Executors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html" class="external" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html"&gt;java.util.concurrent.ScheduledExecutorService&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html" title="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html" class="external"&gt;java.util.concurrent.ScheduledThreadPoolExecutor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;List&amp;lt;ScheduledFuture&amp;lt;?&amp;gt;&amp;gt;&#51032; &#53076;&#46300;&#44032; &#49892;&#51204;&#50640;&#49436; &#50416;&#51064; &#44163;&#51060; &#50630;&#51012;&#44620;&#54644;&#49436; &#52286;&#50500;&#48372;&#45768; &#48152;&#44049;&#44172;&#46020; Spring &#54252;&#53944;&#54260;&#47532;&#50724;&#51032; &#51068;&#48512;&#48516;&#51064; Spring integration&#50640; &#51080;&#45716; &#49548;&#49828; &#53076;&#46300;&#50640;&#49436; &#44536;&#47088; &#53076;&#46300;&#44032; &#48156;&#44204;&#46104;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fisheye.springframework.org/browse/spring-integration/trunk/spring-integration-core/src/main/java/org/springframework/integration/dispatcher/DefaultMessageDispatcher.java?r1=291&amp;amp;amp;r2=329" title="https://fisheye.springframework.org/browse/spring-integration/trunk/spring-integration-core/src/main/java/org/springframework/integration/dispatcher/DefaultMessageDispatcher.java?r1=291&amp;amp;amp;r2=329" class="external"&gt;org.springframework.integration.dispatcher.DefaultMessageDispatcher.java&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</source>
  <rights nil="true"></rights>
  <creator>benelog</creator>
  <contributor_modified>benelog</contributor_modified>
  <version type="integer">534</version>
  <tags></tags>
</page>
