<?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_Method</id>
		<title>Java/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%2FGenerics%2FGeneric_Method"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Generics/Generic_Method&amp;action=history"/>
		<updated>2026-04-18T19:34:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Generics/Generic_Method&amp;diff=9185&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_Method&amp;diff=9185&amp;oldid=prev"/>
				<updated>2010-06-01T07:27:27Z</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_Method&amp;diff=9184&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_Method&amp;diff=9184&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;== Demonstrate a simple 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;
/*&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;
public class GenMethDemo {  &lt;br /&gt;
 &lt;br /&gt;
  // Determine if an object is in an array. &lt;br /&gt;
  static &amp;lt;T, V extends T&amp;gt; boolean isIn(T x, V[] y) { &lt;br /&gt;
 &lt;br /&gt;
    for(int i=0; i &amp;lt; y.length; i++) &lt;br /&gt;
      if(x.equals(y[i])) return true; &lt;br /&gt;
 &lt;br /&gt;
    return false; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
 &lt;br /&gt;
    // Use isIn() on Integers. &lt;br /&gt;
    Integer nums[] = { 1, 2, 3, 4, 5 }; &lt;br /&gt;
 &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;
    System.out.println(); &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;, &lt;br /&gt;
                      &amp;quot;four&amp;quot;, &amp;quot;five&amp;quot; }; &lt;br /&gt;
 &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;
 &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;
    // Opps! Won&amp;quot;t compile! Types must be compatible. &lt;br /&gt;
//    if(isIn(&amp;quot;two&amp;quot;, nums)) &lt;br /&gt;
//      System.out.println(&amp;quot;two is in strs&amp;quot;); &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 generic: Ambiguity caused by erasure on overloaded methods.  ==&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;
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 MyGenClass&amp;lt;T, V&amp;gt; {  &lt;br /&gt;
  T ob1;  &lt;br /&gt;
  V ob2;  &lt;br /&gt;
 &lt;br /&gt;
  // ... &lt;br /&gt;
 &lt;br /&gt;
  // These two overloaded methods are ambiguous.  &lt;br /&gt;
  // and will not compile. &lt;br /&gt;
  void set(T o) { &lt;br /&gt;
    ob1 = o; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  void set(V o) { &lt;br /&gt;
    ob2 = o; &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
// Can&amp;quot;t create an instance of T. &lt;br /&gt;
class Gen&amp;lt;T&amp;gt; {  &lt;br /&gt;
  T ob;  &lt;br /&gt;
  Gen() {  &lt;br /&gt;
    ob = new T(); // Illegal!!! &lt;br /&gt;
  }  &lt;br /&gt;
} &lt;br /&gt;
public class Wrong&amp;lt;T&amp;gt; {  &lt;br /&gt;
  // Wrong, no static variables of type T. &lt;br /&gt;
  static T ob; &lt;br /&gt;
    &lt;br /&gt;
  // Wrong, no static method can use T. &lt;br /&gt;
  static T getob() { &lt;br /&gt;
    return ob; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  // Wrong, no static method can access object &lt;br /&gt;
  // of type T. &lt;br /&gt;
  static void showob() { &lt;br /&gt;
    System.out.println(ob); &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 generic: A situation that creates a bridge 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;
/*&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;
class Gen&amp;lt;T&amp;gt; {  &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) {  &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 extends Gen&amp;lt;String&amp;gt; { &lt;br /&gt;
 &lt;br /&gt;
  Gen2(String o) { &lt;br /&gt;
    super(o); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  // A String-specific override of getob(). &lt;br /&gt;
  String getob() { &lt;br /&gt;
    System.out.print(&amp;quot;You called String getob(): &amp;quot;); &lt;br /&gt;
    return ob; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
// Demonstrate a situation that requires a bridge method. &lt;br /&gt;
public class BridgeDemo {  &lt;br /&gt;
  public static void main(String args[]) {  &lt;br /&gt;
 &lt;br /&gt;
    // Create a Gen2 object for Strings. &lt;br /&gt;
    Gen2 strOb2 = new Gen2(&amp;quot;Generics Test&amp;quot;);  &lt;br /&gt;
 &lt;br /&gt;
    System.out.println(strOb2.getob()); &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;
== Overriding a generic method in 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;
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; // 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) {  &lt;br /&gt;
    ob = o;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Return ob.  &lt;br /&gt;
  T getob() {  &lt;br /&gt;
    System.out.print(&amp;quot;Gen&amp;quot;s getob(): &amp;quot; ); &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
 &lt;br /&gt;
// A subclass of Gen that overrides getob(). &lt;br /&gt;
class Gen2&amp;lt;T&amp;gt; extends Gen&amp;lt;T&amp;gt; { &lt;br /&gt;
 &lt;br /&gt;
  Gen2(T o) { &lt;br /&gt;
    super(o); &lt;br /&gt;
  } &lt;br /&gt;
   &lt;br /&gt;
  // Override getob(). &lt;br /&gt;
  T getob() {  &lt;br /&gt;
    System.out.print(&amp;quot;Gen2&amp;quot;s getob(): &amp;quot;); &lt;br /&gt;
    return ob;  &lt;br /&gt;
  }  &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
// Demonstrate generic method override. &lt;br /&gt;
public class OverrideDemo {  &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;
    System.out.println(iOb.getob()); &lt;br /&gt;
    System.out.println(iOb2.getob()); &lt;br /&gt;
    System.out.println(strOb2.getob()); &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;
== Return generic value from 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;
import java.io.Serializable;&lt;br /&gt;
class Base {&lt;br /&gt;
}&lt;br /&gt;
class Sub1 extends Base implements Serializable {&lt;br /&gt;
  public void run() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Sub2 extends Base implements Serializable {&lt;br /&gt;
  public void run() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class TypeInference {&lt;br /&gt;
  static &amp;lt;T extends Base&amp;gt; T infer(T t1, T t2) {&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Base base = infer(new Sub1(), new Sub2());&lt;br /&gt;
    Serializable runnable = infer(new Sub1(), new Sub2());&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>