<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FGenerics%2FGeneric_Method</id>
		<title>Java Tutorial/Generics/Generic Method - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FGenerics%2FGeneric_Method"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Generics/Generic_Method&amp;action=history"/>
		<updated>2026-04-18T20:24:53Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Generics/Generic_Method&amp;diff=5448&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Generics/Generic_Method&amp;diff=5448&amp;oldid=prev"/>
				<updated>2010-06-01T05:20:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:20, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Generics/Generic_Method&amp;diff=5447&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Generics/Generic_Method&amp;diff=5447&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Creating a Generic Method ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  static &amp;lt;T, V extends T&amp;gt; boolean isIn(T x, V[] y) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; y.length; i++){&lt;br /&gt;
      if (x.equals(y[i])){&lt;br /&gt;
        return true;&lt;br /&gt;
      }  &lt;br /&gt;
    }      &lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Integer nums[] = { 1, 2, 3, 4, 5 };&lt;br /&gt;
    if (isIn(2, nums)){&lt;br /&gt;
      System.out.println(&amp;quot;2 is in nums&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!isIn(7, nums)){&lt;br /&gt;
      System.out.println(&amp;quot;7 is not in nums&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    // Use isIn() on Strings.&lt;br /&gt;
    String strs[] = { &amp;quot;one&amp;quot;, &amp;quot;two&amp;quot;, &amp;quot;three&amp;quot;, &amp;quot;four&amp;quot;, &amp;quot;five&amp;quot; };&lt;br /&gt;
    if (isIn(&amp;quot;two&amp;quot;, strs))&lt;br /&gt;
      System.out.println(&amp;quot;two is in strs&amp;quot;);&lt;br /&gt;
    if (!isIn(&amp;quot;seven&amp;quot;, strs))&lt;br /&gt;
      System.out.println(&amp;quot;seven is not in strs&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;2 is in nums&lt;br /&gt;
7 is not in nums&lt;br /&gt;
two is in strs&lt;br /&gt;
seven is not in strs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generic Constructors ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class GenericClass {&lt;br /&gt;
  private double val;&lt;br /&gt;
  &amp;lt;T extends Number&amp;gt; GenericClass(T arg) {&lt;br /&gt;
    val = arg.doubleValue();&lt;br /&gt;
  }&lt;br /&gt;
  void showValue() {&lt;br /&gt;
    System.out.println(&amp;quot;val: &amp;quot; + val);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    GenericClass test = new GenericClass(100);&lt;br /&gt;
    GenericClass test2 = new GenericClass(123.5F);&lt;br /&gt;
    test.showValue();&lt;br /&gt;
    test2.showValue();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;val: 100.0&lt;br /&gt;
val: 123.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generic method maximum returns the largest of three objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  // determines the largest of three Comparable objects&lt;br /&gt;
  public static &amp;lt;T extends Comparable&amp;lt;T&amp;gt;&amp;gt; T maximum(T x, T y, T z) {&lt;br /&gt;
    T max = x; // assume x is initially the largest&lt;br /&gt;
    if (y.rupareTo(max) &amp;gt; 0)&lt;br /&gt;
      max = y; // y is the largest so far&lt;br /&gt;
    if (z.rupareTo(max) &amp;gt; 0)&lt;br /&gt;
      max = z; // z is the largest&lt;br /&gt;
    return max; // returns the largest object&lt;br /&gt;
  } // end method maximum&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.printf(&amp;quot;Maximum of %d, %d and %d is %d\n\n&amp;quot;, 3, 4, 5, maximum(3, 4, 5));&lt;br /&gt;
    System.out.printf(&amp;quot;Maximum of %.1f, %.1f and %.1f is %.1f\n\n&amp;quot;, 6.6, 8.8, 7.7, maximum(6.6,&lt;br /&gt;
        8.8, 7.7));&lt;br /&gt;
    System.out.printf(&amp;quot;Maximum of %s, %s and %s is %s\n&amp;quot;, &amp;quot;pear&amp;quot;, &amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;, maximum(&lt;br /&gt;
        &amp;quot;pear&amp;quot;, &amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Maximum of 3, 4 and 5 is 5&lt;br /&gt;
Maximum of 6.6, 8.8 and 7.7 is 8.8&lt;br /&gt;
Maximum of pear, apple and orange is pear&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generic methods: Max. Min ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
class Comparators {&lt;br /&gt;
  public static &amp;lt;T&amp;gt; T max(Collection&amp;lt;? extends T&amp;gt; coll, Comparator&amp;lt;? super T&amp;gt; cmp) {&lt;br /&gt;
    T candidate = coll.iterator().next();&lt;br /&gt;
    for (T elt : coll) {&lt;br /&gt;
      if (cmp.rupare(candidate, elt) &amp;lt; 0) {&lt;br /&gt;
        candidate = elt;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return candidate;&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T max(Collection&amp;lt;? extends T&amp;gt; coll) {&lt;br /&gt;
    return max(coll, Comparators.&amp;lt;T&amp;gt; naturalOrder());&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T&amp;gt; T min(Collection&amp;lt;? extends T&amp;gt; coll, Comparator&amp;lt;? super T&amp;gt; cmp) {&lt;br /&gt;
    return max(coll, reverseOrder(cmp));&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T min(Collection&amp;lt;? extends T&amp;gt; coll) {&lt;br /&gt;
    return max(coll, Comparators.&amp;lt;T&amp;gt; reverseOrder());&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; Comparator&amp;lt;T&amp;gt; naturalOrder() {&lt;br /&gt;
    return new Comparator&amp;lt;T&amp;gt;() {&lt;br /&gt;
      public int compare(T o1, T o2) {&lt;br /&gt;
        return o1.rupareTo(o2);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T&amp;gt; Comparator&amp;lt;T&amp;gt; reverseOrder(final Comparator&amp;lt;T&amp;gt; cmp) {&lt;br /&gt;
    return new Comparator&amp;lt;T&amp;gt;() {&lt;br /&gt;
      public int compare(T o1, T o2) {&lt;br /&gt;
        return cmp.rupare(o2, o1);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; Comparator&amp;lt;T&amp;gt; reverseOrder() {&lt;br /&gt;
    return new Comparator&amp;lt;T&amp;gt;() {&lt;br /&gt;
      public int compare(T o1, T o2) {&lt;br /&gt;
        return o2.rupareTo(o1);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
public class MainClass{&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Comparator&amp;lt;String&amp;gt; sizeOrder = new Comparator&amp;lt;String&amp;gt;() {&lt;br /&gt;
      public int compare(String s1, String s2) {&lt;br /&gt;
        return s1.length() &amp;lt; s2.length() ? -1 : s1.length() &amp;gt; s2.length() ? 1 : s1.rupareTo(s2);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    Collection&amp;lt;String&amp;gt; strings = Arrays.asList(&amp;quot;AAA&amp;quot;, &amp;quot;aaa&amp;quot;, &amp;quot;CCC&amp;quot;, &amp;quot;f&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    System.out.println(Comparators.max(strings));&lt;br /&gt;
    System.out.println(Comparators.min(strings));&lt;br /&gt;
    System.out.println(Comparators.max(strings,sizeOrder));&lt;br /&gt;
    System.out.println(Comparators.min(strings,sizeOrder));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;f&lt;br /&gt;
AAA&lt;br /&gt;
aaa&lt;br /&gt;
f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using generic methods to print array of different types ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  // generic method printArray&lt;br /&gt;
  public static &amp;lt;E&amp;gt; void printArray(E[] inputArray) {&lt;br /&gt;
    // display array elements&lt;br /&gt;
    for (E element : inputArray)&lt;br /&gt;
      System.out.printf(&amp;quot;%s &amp;quot;, element);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    // create arrays of Integer, Double and Character&lt;br /&gt;
    Integer[] integerArray = { 1, 2, 3, 4, 5, 6 };&lt;br /&gt;
    Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };&lt;br /&gt;
    Character[] characterArray = { &amp;quot;H&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;L&amp;quot;, &amp;quot;L&amp;quot;, &amp;quot;O&amp;quot; };&lt;br /&gt;
    System.out.println(&amp;quot;Array integerArray contains:&amp;quot;);&lt;br /&gt;
    printArray(integerArray); // pass an Integer array&lt;br /&gt;
    System.out.println(&amp;quot;\nArray doubleArray contains:&amp;quot;);&lt;br /&gt;
    printArray(doubleArray); // pass a Double array&lt;br /&gt;
    System.out.println(&amp;quot;\nArray characterArray contains:&amp;quot;);&lt;br /&gt;
    printArray(characterArray); // pass a Character array&lt;br /&gt;
  } // end main&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Array integerArray contains:&lt;br /&gt;
1 2 3 4 5 6 &lt;br /&gt;
Array doubleArray contains:&lt;br /&gt;
1.1 2.2 3.3 4.4 5.5 6.6 7.7 &lt;br /&gt;
Array characterArray contains:&lt;br /&gt;
H E L L O&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Wildcard test program ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Integer[] integers = { 1, 2, 3, 4, 5 };&lt;br /&gt;
    ArrayList&amp;lt;Integer&amp;gt; integerList = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt;
    for (Integer element : integers)&lt;br /&gt;
      integerList.add(element);&lt;br /&gt;
    System.out.printf(&amp;quot;integerList contains: %s\n&amp;quot;, integerList);&lt;br /&gt;
    System.out.printf(&amp;quot;Total of the elements in integerList: %.0f\n\n&amp;quot;, sum(integerList));&lt;br /&gt;
    Double[] doubles = { 1.1, 3.3, 5.5 };&lt;br /&gt;
    ArrayList&amp;lt;Double&amp;gt; doubleList = new ArrayList&amp;lt;Double&amp;gt;();&lt;br /&gt;
    for (Double element : doubles)&lt;br /&gt;
      doubleList.add(element);&lt;br /&gt;
    System.out.printf(&amp;quot;doubleList contains: %s\n&amp;quot;, doubleList);&lt;br /&gt;
    System.out.printf(&amp;quot;Total of the elements in doubleList: %.1f\n\n&amp;quot;, sum(doubleList));&lt;br /&gt;
    Number[] numbers = { 1, 2.4, 3, 4.1 }; // Integers and Doubles&lt;br /&gt;
    ArrayList&amp;lt;Number&amp;gt; numberList = new ArrayList&amp;lt;Number&amp;gt;();&lt;br /&gt;
    for (Number element : numbers)&lt;br /&gt;
      numberList.add(element);&lt;br /&gt;
    System.out.printf(&amp;quot;numberList contains: %s\n&amp;quot;, numberList);&lt;br /&gt;
    System.out.printf(&amp;quot;Total of the elements in numberList: %.1f\n&amp;quot;, sum(numberList));&lt;br /&gt;
  }&lt;br /&gt;
  public static double sum(ArrayList&amp;lt;? extends Number&amp;gt; list) {&lt;br /&gt;
    double total = 0;&lt;br /&gt;
    for (Number element : list)&lt;br /&gt;
      total += element.doubleValue();&lt;br /&gt;
    return total;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;integerList contains: [1, 2, 3, 4, 5]&lt;br /&gt;
Total of the elements in integerList: 15&lt;br /&gt;
doubleList contains: [1.1, 3.3, 5.5]&lt;br /&gt;
Total of the elements in doubleList: 9.9&lt;br /&gt;
numberList contains: [1, 2.4, 3, 4.1]&lt;br /&gt;
Total of the elements in numberList: 10.5&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>