As Alexander Tokarev mentioned, you can't do this. An alternative to his approach is to roll your own enum-like classes by extending nested classes from a base class that has a private constructor:
public class Resource {
private Resource() {}
// some methods, abstract methods, etc...
public static class File extends Resource {
private File() {}
// etc...
}
private static final File FILE = new File();
// other subclasses of Resource
}
Now you can use generics as usual:
interface Reader<R extends Resource> {...}
class FileReader implements Reader<Resource.File> {...}
This gives you many of the advantages that enums have -- type safety, a closed set of values, etc -- while explicitly setting up a class hierarchy that you can use with generics. The major cost is in brevity of code, though you also lose the ability to use the values in switch statements, as well as some other, more esoteric benefits of enums.