<?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%2FGenerics%2FGeneric_Class</id>
		<title>Java/Generics/Generic Class - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FGenerics%2FGeneric_Class"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Generics/Generic_Class&amp;action=history"/>
		<updated>2026-04-18T19:33:29Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Generics/Generic_Class&amp;diff=9187&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Generics/Generic_Class&amp;diff=9187&amp;oldid=prev"/>
				<updated>2010-06-01T07:27:29Z</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;Версия 07:27, 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/Generics/Generic_Class&amp;diff=9186&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Generics/Generic_Class&amp;diff=9186&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:50Z</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;== A nongeneric class can be the superclass of a generic subclass. ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Java 2, v5.0 (Tiger) New Features&lt;br /&gt;
by Herbert Schildt&lt;br /&gt;
ISBN: 0072258543&lt;br /&gt;
Publisher: McGraw-Hill/Osborne, 2004&lt;br /&gt;
*/&lt;br /&gt;
 &lt;br /&gt;
// A nongeneric class. &lt;br /&gt;
class NonGen { &lt;br /&gt;
  int num; &lt;br /&gt;
 &lt;br /&gt;
  NonGen(int i) { &lt;br /&gt;
    num = i; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  int getnum() { &lt;br /&gt;
    return num; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
// A generic subclass. &lt;br /&gt;
class Gen&amp;lt;T&amp;gt; extends NonGen {  &lt;br /&gt;
  T ob; // declare an object of type T  &lt;br /&gt;
    &lt;br /&gt;
  // Pass the constructor a reference to   &lt;br /&gt;
  // an object of type T.  &lt;br /&gt;
  Gen(T o, int i) {  &lt;br /&gt;
    super(i); &lt;br /&gt;
    ob = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Return ob.  &lt;br /&gt;
  T getob() {  &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
// Create a Gen object. &lt;br /&gt;
public class HierDemo2 {  &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
    &lt;br /&gt;
    // Create a Gen object for String. &lt;br /&gt;
    Gen&amp;lt;String&amp;gt; w = new Gen&amp;lt;String&amp;gt;(&amp;quot;Hello&amp;quot;, 47); &lt;br /&gt;
    &lt;br /&gt;
    System.out.print(w.getob() + &amp;quot; &amp;quot;); &lt;br /&gt;
    System.out.println(w.getnum()); &lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A simple generic class.   ==&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;
 &lt;br /&gt;
class Gen&amp;lt;T&amp;gt; {&lt;br /&gt;
  T ob; // declare an object of type T&lt;br /&gt;
  Gen(T o) {&lt;br /&gt;
    ob = o;&lt;br /&gt;
  }&lt;br /&gt;
  T getob() {&lt;br /&gt;
    return ob;&lt;br /&gt;
  }&lt;br /&gt;
  void showType() {&lt;br /&gt;
    System.out.println(&amp;quot;Type of T is &amp;quot; + ob.getClass().getName());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class GenDemo {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Gen&amp;lt;Integer&amp;gt; iOb;&lt;br /&gt;
    iOb = new Gen&amp;lt;Integer&amp;gt;(88);&lt;br /&gt;
    iOb.showType();&lt;br /&gt;
    int v = iOb.getob();&lt;br /&gt;
    System.out.println(&amp;quot;value: &amp;quot; + v);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    Gen&amp;lt;String&amp;gt; strOb = new Gen&amp;lt;String&amp;gt;(&amp;quot;Generics Test&amp;quot;);&lt;br /&gt;
    strOb.showType();&lt;br /&gt;
    String str = strOb.getob();&lt;br /&gt;
    System.out.println(&amp;quot;value: &amp;quot; + str);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A simple generic class hierarchy. ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Java 2, v5.0 (Tiger) New Features&lt;br /&gt;
by Herbert Schildt&lt;br /&gt;
ISBN: 0072258543&lt;br /&gt;
Publisher: McGraw-Hill/Osborne, 2004&lt;br /&gt;
*/&lt;br /&gt;
class Gen&amp;lt;T&amp;gt; {  &lt;br /&gt;
  T ob; &lt;br /&gt;
    &lt;br /&gt;
  Gen(T o) {  &lt;br /&gt;
    ob = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Return ob.  &lt;br /&gt;
  T getob() {  &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
 &lt;br /&gt;
// A subclass of Gen that defines a second &lt;br /&gt;
// type parameter, called V. &lt;br /&gt;
class Gen2&amp;lt;T, V&amp;gt; extends Gen&amp;lt;T&amp;gt; { &lt;br /&gt;
  V ob2; &lt;br /&gt;
 &lt;br /&gt;
  Gen2(T o, V o2) { &lt;br /&gt;
    super(o); &lt;br /&gt;
    ob2 = o2; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  V getob2() { &lt;br /&gt;
    return ob2; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
// Create an object of type Gen2. &lt;br /&gt;
public class HierDemo {  &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
    &lt;br /&gt;
    // Create a Gen2 object for String and Integer. &lt;br /&gt;
    Gen2&amp;lt;String, Integer&amp;gt; x = &lt;br /&gt;
      new Gen2&amp;lt;String, Integer&amp;gt;(&amp;quot;Value is: &amp;quot;, 99);  &lt;br /&gt;
 &lt;br /&gt;
    System.out.print(x.getob()); &lt;br /&gt;
    System.out.println(x.getob2()); &lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Generic Object Tester ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
License for Java 1.5 &amp;quot;Tiger&amp;quot;: A Developer&amp;quot;s Notebook&lt;br /&gt;
     (O&amp;quot;Reilly) example package&lt;br /&gt;
Java 1.5 &amp;quot;Tiger&amp;quot;: A Developer&amp;quot;s Notebook (O&amp;quot;Reilly) &lt;br /&gt;
by Brett McLaughlin and David Flanagan.&lt;br /&gt;
ISBN: 0-596-00738-8&lt;br /&gt;
You can use the examples and the source code any way you want, but&lt;br /&gt;
please include a reference to where it comes from if you use it in&lt;br /&gt;
your own products or services. Also note that this software is&lt;br /&gt;
provided by the author &amp;quot;as is&amp;quot;, with no expressed or implied warranties. &lt;br /&gt;
In no event shall the author be liable for any direct or indirect&lt;br /&gt;
damages arising in any way out of the use of this software.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
class GuitarManufacturerList extends LinkedList&amp;lt;String&amp;gt; {&lt;br /&gt;
  public GuitarManufacturerList() {&lt;br /&gt;
    super();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean add(String manufacturer) {&lt;br /&gt;
    if (manufacturer.indexOf(&amp;quot;Guitars&amp;quot;) == -1) {&lt;br /&gt;
      return false;&lt;br /&gt;
    } else {&lt;br /&gt;
      super.add(manufacturer);&lt;br /&gt;
      return true;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class CustomObjectTester {&lt;br /&gt;
  /** A custom object that extends List */&lt;br /&gt;
  private GuitarManufacturerList manufacturers;&lt;br /&gt;
  public CustomObjectTester() {&lt;br /&gt;
    this.manufacturers = new GuitarManufacturerList();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * &amp;lt;p&amp;gt;Test iterating over an object that extends List&amp;lt;/p&amp;gt;&lt;br /&gt;
   */&lt;br /&gt;
  public void testListExtension(PrintStream out) throws IOException {&lt;br /&gt;
    // Add some items for good measure&lt;br /&gt;
    manufacturers.add(&amp;quot;Epiphone Guitars&amp;quot;);&lt;br /&gt;
    manufacturers.add(&amp;quot;Gibson Guitars&amp;quot;);&lt;br /&gt;
    // Iterate with for/in&lt;br /&gt;
    for (String manufacturer : manufacturers) {&lt;br /&gt;
      out.println(manufacturer);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      CustomObjectTester tester = new CustomObjectTester();&lt;br /&gt;
      tester.testListExtension(System.out);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Demonstrate the non generic class ==&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;
 &lt;br /&gt;
class NonGen {  &lt;br /&gt;
  Object ob; &lt;br /&gt;
    &lt;br /&gt;
  NonGen(Object o) {  &lt;br /&gt;
    ob = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  Object getob() {  &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
  void showType() {  &lt;br /&gt;
    System.out.println(&amp;quot;Type of ob is &amp;quot; +  &lt;br /&gt;
                       ob.getClass().getName());  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
public class NonGenDemo {  &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
    NonGen integerObject;   &lt;br /&gt;
    integerObject = new NonGen(88);  &lt;br /&gt;
  &lt;br /&gt;
    integerObject.showType(); &lt;br /&gt;
 &lt;br /&gt;
    int v = (Integer) integerObject.getob();  &lt;br /&gt;
    System.out.println(&amp;quot;value: &amp;quot; + v);  &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    NonGen strOb = new NonGen(&amp;quot;Non-Generics Test&amp;quot;);  &lt;br /&gt;
    strOb.showType(); &lt;br /&gt;
 &lt;br /&gt;
    String str = (String) strOb.getob();  &lt;br /&gt;
    System.out.println(&amp;quot;value: &amp;quot; + str);  &lt;br /&gt;
 &lt;br /&gt;
    integerObject = strOb; &lt;br /&gt;
    v = (Integer) integerObject.getob(); &lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Java hierarchy generic class ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Java 2, v5.0 (Tiger) New Features&lt;br /&gt;
by Herbert Schildt&lt;br /&gt;
ISBN: 0072258543&lt;br /&gt;
Publisher: McGraw-Hill/Osborne, 2004&lt;br /&gt;
*/&lt;br /&gt;
// Here, T is bound by Object by default. &lt;br /&gt;
class Gen&amp;lt;T&amp;gt; {  &lt;br /&gt;
  T ob; // here, T will be replaced by Object &lt;br /&gt;
    &lt;br /&gt;
  Gen(T o) {  &lt;br /&gt;
    ob = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Return ob.  &lt;br /&gt;
  T getob() {  &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
 &lt;br /&gt;
// Here, T is bound by String. &lt;br /&gt;
class GenStr&amp;lt;T extends String&amp;gt; { &lt;br /&gt;
  T str; // here, T will be replaced by String &lt;br /&gt;
 &lt;br /&gt;
  GenStr(T o) {  &lt;br /&gt;
    str = o;  &lt;br /&gt;
  }  &lt;br /&gt;
 &lt;br /&gt;
  T getstr() { return str; } &lt;br /&gt;
}&lt;br /&gt;
public class GenTypeDemo {  &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
    Gen&amp;lt;Integer&amp;gt; iOb = new Gen&amp;lt;Integer&amp;gt;(99);  &lt;br /&gt;
    Gen&amp;lt;Float&amp;gt; fOb = new Gen&amp;lt;Float&amp;gt;(102.2F); &lt;br /&gt;
 &lt;br /&gt;
    System.out.println(iOb.getClass().getName()); &lt;br /&gt;
    System.out.println(fOb.getClass().getName()); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pair of template arguments ==&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;
 &lt;br /&gt;
/* $Id$&lt;br /&gt;
 *&lt;br /&gt;
 * Behavior Protocols Tools - Parsers, Transformations&lt;br /&gt;
 * Copyright (C) 2006-2007  DSRG, Charles University in Prague&lt;br /&gt;
 *                          http://dsrg.mff.cuni.cz/&lt;br /&gt;
 *&lt;br /&gt;
 * This library is free software; you can redistribute it and/or&lt;br /&gt;
 * modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 * License as published by the Free Software Foundation; either&lt;br /&gt;
 * version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This library is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 * Lesser General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 * License along with this library; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,&lt;br /&gt;
 * MA 02110-1301 USA&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
package org.ow2.dsrg.fm.bptools.util;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Keeps pair of values whose type is given by template arguments&lt;br /&gt;
 * @author thorm&lt;br /&gt;
 */&lt;br /&gt;
public class Pair&amp;lt;T1, T2&amp;gt; {&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * Creates a new instance of Pair&lt;br /&gt;
     * @param first first value&lt;br /&gt;
     * @param second second value&lt;br /&gt;
     */&lt;br /&gt;
    public Pair(T1 first, T2 second) {&lt;br /&gt;
        this.first = first;&lt;br /&gt;
        this.second = second;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public boolean equals(Object obj) {&lt;br /&gt;
        if (obj instanceof Pair) {&lt;br /&gt;
            Pair other = (Pair)obj;&lt;br /&gt;
             return (other.first == null ? this.first == null : other.first.equals(this.first)) &amp;amp;&amp;amp; &lt;br /&gt;
                     (other.second == null ? this.second == null : other.second.equals(this.second));&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
            return false;&lt;br /&gt;
    }&lt;br /&gt;
    public String toString(){&lt;br /&gt;
        return first.toString() +&amp;quot;::&amp;quot;+second.toString() ;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * first value&lt;br /&gt;
     */&lt;br /&gt;
    public T1 first;&lt;br /&gt;
    /**&lt;br /&gt;
     * second value&lt;br /&gt;
     */&lt;br /&gt;
    public T2 second;&lt;br /&gt;
}&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stats attempts (unsuccessfully) to create a generic class ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Java 2, v5.0 (Tiger) New Features&lt;br /&gt;
by Herbert Schildt&lt;br /&gt;
ISBN: 0072258543&lt;br /&gt;
Publisher: McGraw-Hill/Osborne, 2004&lt;br /&gt;
*/&lt;br /&gt;
// Stats attempts (unsuccessfully) to create a generic class that can compute &lt;br /&gt;
// the average of an array of numbers of any given type. &lt;br /&gt;
// The class contains an error! &lt;br /&gt;
public class Stats&amp;lt;T&amp;gt; {  &lt;br /&gt;
  T[] nums; // nums is an array of type T &lt;br /&gt;
    &lt;br /&gt;
  // Pass the constructor a reference to   &lt;br /&gt;
  // an array of type T. &lt;br /&gt;
  Stats(T[] o) {  &lt;br /&gt;
    nums = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Return type double in all cases. &lt;br /&gt;
  double average() {  &lt;br /&gt;
    double sum = 0.0; &lt;br /&gt;
 &lt;br /&gt;
    for(int i=0; i &amp;lt; nums.length; i++)  &lt;br /&gt;
      sum += nums[i].doubleValue(); // Error!!! &lt;br /&gt;
 &lt;br /&gt;
    return sum / nums.length; &lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
           &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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use the instanceof operator with a generic class hierarchy.   ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Java 2, v5.0 (Tiger) New Features&lt;br /&gt;
by Herbert Schildt&lt;br /&gt;
ISBN: 0072258543&lt;br /&gt;
Publisher: McGraw-Hill/Osborne, 2004&lt;br /&gt;
*/&lt;br /&gt;
class Gen&amp;lt;T&amp;gt; {   &lt;br /&gt;
  T ob;  &lt;br /&gt;
     &lt;br /&gt;
  Gen(T o) {   &lt;br /&gt;
    ob = o;   &lt;br /&gt;
  }   &lt;br /&gt;
   &lt;br /&gt;
  // Return ob.   &lt;br /&gt;
  T getob() {   &lt;br /&gt;
    return ob;   &lt;br /&gt;
  }   &lt;br /&gt;
}   &lt;br /&gt;
  &lt;br /&gt;
// A subclass of Gen.  &lt;br /&gt;
class Gen2&amp;lt;T&amp;gt; extends Gen&amp;lt;T&amp;gt; {  &lt;br /&gt;
  Gen2(T o) {  &lt;br /&gt;
    super(o);  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
 // Demonstrate runtime type ID implications of generic class hierarchy.  &lt;br /&gt;
public class HierDemo3 {   &lt;br /&gt;
  public static void main(String args[]) {   &lt;br /&gt;
     &lt;br /&gt;
    // Create a Gen object for Integers.  &lt;br /&gt;
    Gen&amp;lt;Integer&amp;gt; iOb = new Gen&amp;lt;Integer&amp;gt;(88);  &lt;br /&gt;
  &lt;br /&gt;
    // Create a Gen2 object for Integers.  &lt;br /&gt;
    Gen2&amp;lt;Integer&amp;gt; iOb2 = new Gen2&amp;lt;Integer&amp;gt;(99);   &lt;br /&gt;
    &lt;br /&gt;
    // Create a Gen2 object for Strings.  &lt;br /&gt;
    Gen2&amp;lt;String&amp;gt; strOb2 = new Gen2&amp;lt;String&amp;gt;(&amp;quot;Generics Test&amp;quot;);   &lt;br /&gt;
  &lt;br /&gt;
    // See if iOb2 is some form of Gen2. &lt;br /&gt;
    if(iOb2 instanceof Gen2&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;iOb2 is instance of Gen2&amp;quot;);  &lt;br /&gt;
 &lt;br /&gt;
    // See if iOb2 is some form of Gen. &lt;br /&gt;
    if(iOb2 instanceof Gen&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;iOb2 is instance of Gen&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
    System.out.println();  &lt;br /&gt;
  &lt;br /&gt;
    // See if strOb2 is a Gen2. &lt;br /&gt;
    if(strOb2 instanceof Gen2&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;strOb is instance of Gen2&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
    // See if strOb2 is a Gen. &lt;br /&gt;
    if(strOb2 instanceof Gen&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;strOb is instance of Gen&amp;quot;);  &lt;br /&gt;
 &lt;br /&gt;
    System.out.println();  &lt;br /&gt;
  &lt;br /&gt;
    // See if iOb is an instance of Gen2, which its not. &lt;br /&gt;
    if(iOb instanceof Gen2&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;iOb is instance of Gen2&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
    // See if iOb is an instance of Gen, which it is. &lt;br /&gt;
    if(iOb instanceof Gen&amp;lt;?&amp;gt;)   &lt;br /&gt;
      System.out.println(&amp;quot;iOb is instance of Gen&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
    // The following can&amp;quot;t be compiled because  &lt;br /&gt;
    // generic type info does not exist at runtime. &lt;br /&gt;
//    if(iOb2 instanceof Gen2&amp;lt;Integer&amp;gt;)   &lt;br /&gt;
//      System.out.println(&amp;quot;iOb2 is instance of Gen2&amp;lt;Integer&amp;gt;&amp;quot;);  &lt;br /&gt;
  }   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &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;/div&gt;</summary>
			</entry>

	</feed>