fork download
  1. @SuppressWarnings({ "unchecked", "rawtypes" })
  2. final class Example
  3. {
  4. <E extends Enum<E>> Foo<E> createEnumFoo(Class enumType)
  5. {
  6. // This makes use of e.g. Enum.valueOf(enumType, ...).
  7. return Enum.valueOf(enumType, "x");
  8. }
  9.  
  10. <T> Foo<T> createFoo(Class<T> type)
  11. {
  12. if (Enum.class.isAssignableFrom(type))
  13. return (Foo<T>) createEnumFoo(type);
  14. else
  15. // Here we would do something else or maybe throw an exception.
  16. return null;
  17. }
  18.  
  19. interface Foo<T>
  20. {
  21. }
  22. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:7: error: incompatible types
        return Enum.valueOf(enumType, "x");
                           ^
  required: Foo<E>
  found:    Enum
  where E is a type-variable:
    E extends Enum<E> declared in method <E>createEnumFoo(Class)
1 error
stdout
Standard output is empty