Ich habe versucht, Informationen zu "Suchen nach Java Enum durch ein anderes Element" zu sammeln und zu implementieren, über die manchmal gesprochen wird. Ich denke, es ist anständig, aber es gibt viele Probleme, die nicht gelöst werden können.
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);
}
}
Das Schlüsselelement ist
jedoch
Es gibt viele Orte, an denen man sich Sorgen machen muss Um ehrlich zu sein, wäre es bequemer, eine Identifikations- und Such-API hinzuzufügen, indem der Lombok-Bibliothek Enum-Klassen-Accessoren und Mitglieder-Accessoren hinzugefügt werden.
Es scheint gut zu sein, das, was Sie in den Kommentaren haben, in den Mittelpunkt der Verwendung zu stellen.