Generics Summary

Contents

Generic Classes

  1. class MyClass <T> { … }
  2. class MyClass <T,V> { … }
  3. class MyClass <T> implements SomeInterface<T> { … }
  4. class MyClass <T> extends SomeClass { … }
  5. class MyClass <T> extends GenericClass <T> { … }
  6. class MyClass <T,V> extends GenericClass <T> implements SomeInterface<V> { … }
  7. class MyClass <T> extends GenericClass <T> implements SomeInterface<String> { … }
  8. class MyClass <T,V> extends GenericClass <T> implements SomeInterface<V>, OtherInterface { … }
  1. class MyClass <T extends SomeClass> { … }
  2. class MyClass <T extends SomeClass & SomeInterface> { … }
  3. class MyClass <T extends SomeClass & SomeInterface & OtherInterface> { … }

Generic Interfaces

  1. interface MyInterface <T> { … }
  2. interface MyInterface <T extends Comparable<T>> { … }

Generic Constructors in Non-Generic Classes

  1. <T> MyConstructor (T obj) { … }
  2. <T extends SomeClass> MyConstructor (T obj) { … }

Generic Methods in Non-Generic Classes

  1. <T> void foo(T obj){ … }
  2. <T> void foo(T obj1, T obj2) { … }
  3. <T> T foo(T obj) { … }
  1. <T extends SomeClass> void foo(T obj) { … }
  2. <T extends Comparable<T>, V extends T> void foo(T obj1, V obj2) { … }
  3. <T extends SomeClass, V extends T> void foo(GenClass<T> obj1, GenClass<V> obj2) { … }

Wildcards

  1. GenericClass<?> field;
  2. MyClass(GenericClass<?> obj) { … }
  3. someType myMethod (GenericClass<?> obj) { … }
  4. someType myMethod (GenericClass<? extends SuperClass> obj) { … }
  5. someType myMethod (GenericClass<? super SubClass> obj) { … }

© 2017 – 2019, Eric. All rights reserved.