J'ai essayé de collecter et d'implémenter des informations sur "Recherche de Java Enum par un autre élément", dont on parle parfois. Je pense que c'est décent, mais il y a de nombreux problèmes qui ne peuvent pas être résolus.
test.java
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.function.*;
interface Searchable {
  public static <T extends Enum,N extends Comparable> Optional<T> getByCode(Supplier<T[]> v,Function<T,N> s,N code) 
  {
    return Arrays.stream(v.get())
                 .filter(data -> s.apply(data).equals(code))
                 .findFirst();
  }
}
enum TestEnum implements Searchable { 
  A(1),B(2),C(3);
  private final Integer id;
  private TestEnum (int id) { this.id = id;}
  public Integer getId() { return id; }
    
  public static Optional<TestEnum> getById(Integer id){
    return Searchable.getByCode(TestEnum::values,TestEnum::getId,id);
  }
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
  public static void main (String[] args) throws java.lang.Exception
  {
    TestEnum.getById(2).ifPresent(System.out::println);
  }
}
L'élément clé est
pourtant
Il y a de nombreux endroits à craindre Pour être honnête, il serait plus pratique d'ajouter une API d'identification et de recherche en ajoutant des accesseurs de classe enum et des accesseurs membres à la bibliothèque Lombok.
Il semble bon de mettre ce que vous avez dans les commentaires au cœur de l'utilisation.