com.flybotix.hfr.util.lang.EnumUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of highfrequencyrobots Show documentation
Show all versions of highfrequencyrobots Show documentation
A way for wifi robots and IoT devices to quickly send compressed data arrays across a network.
package com.flybotix.hfr.util.lang;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
public class EnumUtils {
public static > List getSortedEnums(Class pEnumeration) {
return getEnums(pEnumeration, true);
}
public static > List getEnums(Class pEnumeration) {
return getEnums(pEnumeration, false);
}
public static > List getEnums(Class pEnumeration, boolean pSorted) {
Set set = EnumSet.allOf(pEnumeration);
List result = new ArrayList();
result.addAll(set);
Collections.sort(result, (e1, e2) -> Integer.compare(e1.ordinal(), e2.ordinal()));
return result;
}
public static > int getLength(Class pEnumeration) {
return getEnums(pEnumeration, false).size();
}
@SuppressWarnings("unchecked")
public static > Class getEnumClass(String pString) {
try {
return (Class)EnumUtils.class.getClassLoader().loadClass(pString);
} catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
return null;
}
public static > E getFirstEnumInstance(Class pEnum) {
return getSortedEnums(pEnum).get(0);
}
public static > List classLoadEnums(String pClass) {
Class clazz = getEnumClass(pClass);
return getSortedEnums(clazz);
}
public static > int hashOf(Class pEnumeration) {
Set set = EnumSet.allOf(pEnumeration);
int p = 31;
int result = 1;
for(E e : set) {
result = p * result + e.name().hashCode();
}
return result;
}
}