На самом деле вы можете вызывать статические методы для экземпляров, но получить экземпляр Enum таким способом невозможно. То есть эта строка не будет работать и каждый раз будет вызывать исключение InstantiationException.
Enum newEnum = enumClass.newInstance();
Это связано с тем, что перечисления имеют ограниченные значения, которые они могут иметь, и эти значения устанавливаются JVM при инициализации класса (Pets.CAT и Pets.DOG, в вашем примере).