Given that your proposed logic would typically look something like this...
public static Texture requestTexture(TextureType type)
return new Texture(); //class type used to create object
return new Texture(32,32); //class type used to create object
return new Texture(128, 128); //class type used to create object
...you won't have a class instance (object) by the time you have to make this decision. This is what enum types are typically used for: rapidly switching on some minimal data item. That is exactly what you have to do here, in order to be able to construct from the associated class type.
Think of the enum as a phone book; the
case block as an old-fashioned telephone switchboard - and the object like the person you are trying to call; while the class is just a plan for creating that specific callee (your mom, your uncle, or your best friend).
enums are not at all the same as classes, which provide program logic; instead they are small data-related types used to define valid options. A common example of enum use is when you are asked to choose your country when signing up for webmail account; the entry is not the country, nor is the list of entries; instead it is like a telephone directory, representing a list of options in the real world. You just can't pick or enter a country that doesn't exist in that list.