Java 从具有多个枚举的类获取枚举
我有一个类似这样的类:Java 从具有多个枚举的类获取枚举,java,enums,Java,Enums,我有一个类似这样的类: public class Catalog { public enum Table1 implements IExcelEnum{ Name, Date, Id } public enum Table2 IExcelEnum { ... } } public class Catalog { public interface I { } public enu
public class Catalog {
public enum Table1 implements IExcelEnum{
Name, Date, Id
}
public enum Table2 IExcelEnum {
...
}
}
public class Catalog
{
public interface I
{
}
public enum T1 implements I
{
A, B, C;
}
public enum T2 implements I
{
D, E, F;
}
public static void main (String [] args) throws Exception
{
String name = "T1";
Class <? extends I> c =
(Class <? extends I>)Class.forName (
Catalog.class.getName () + "$" + name);
I [] values = (I [])c.getMethod ("values").invoke (null);
for (I i: values)
System.out.println (i);
}
}
我可以访问枚举表1,例如:
System.out.println(Catalog.Table2.Name.value());
但我想做的是能够提供一个字符串或标识符,并将枚举返回,以便在创建数据对象时引用它。例如:
Data dataCol1 = new Data(Catalog.getEnum("Table1"), ArrayList<String> values);
Data dataCol1=新数据(Catalog.getEnum(“表1”),ArrayList值);
我有一个名为IExcelEnum的接口,它没有任何字段,这样我就可以通用地键入枚举,这样我的数据结构就可以接受其中的任何一个
最干净的方法是什么?你是说
Catalog.T1.valueOf(“TC1”)
在Java中,所有枚举都实现
valueOf(String)
方法,您的意思是Catalog.T1.valueOf(“TC1”)
在Java中,所有枚举都实现
valueOf(String)
方法,您可能需要像这样使用反射:
public class Catalog {
public enum Table1 implements IExcelEnum{
Name, Date, Id
}
public enum Table2 IExcelEnum {
...
}
}
public class Catalog
{
public interface I
{
}
public enum T1 implements I
{
A, B, C;
}
public enum T2 implements I
{
D, E, F;
}
public static void main (String [] args) throws Exception
{
String name = "T1";
Class <? extends I> c =
(Class <? extends I>)Class.forName (
Catalog.class.getName () + "$" + name);
I [] values = (I [])c.getMethod ("values").invoke (null);
for (I i: values)
System.out.println (i);
}
}
公共类目录
{
公共接口I
{
}
公共枚举T1实现I
{
A、 B,C;
}
公共枚举T2实现I
{
D、 E,F;
}
公共静态void main(字符串[]args)引发异常
{
String name=“T1”;
类您可能需要像这样使用反射:
public class Catalog {
public enum Table1 implements IExcelEnum{
Name, Date, Id
}
public enum Table2 IExcelEnum {
...
}
}
public class Catalog
{
public interface I
{
}
public enum T1 implements I
{
A, B, C;
}
public enum T2 implements I
{
D, E, F;
}
public static void main (String [] args) throws Exception
{
String name = "T1";
Class <? extends I> c =
(Class <? extends I>)Class.forName (
Catalog.class.getName () + "$" + name);
I [] values = (I [])c.getMethod ("values").invoke (null);
for (I i: values)
System.out.println (i);
}
}
公共类目录
{
公共接口I
{
}
公共枚举T1实现I
{
A、 B,C;
}
公共枚举T2实现I
{
D、 E,F;
}
公共静态void main(字符串[]args)引发异常
{
String name=“T1”;
类I不了解您试图实现的目标。如果您在目录中有多个T1
类型的字段,您希望调用Catalog.getEnum(“T1”)返回哪一个字段
?很抱歉,如果我的变量不清楚,我会将它们更改为更具描述性,有多个枚举,我希望能够通过函数调用获取每个枚举。因此,您希望获取枚举类本身吗?我希望能够将表1传递给另一个类,并使其能够对其进行迭代。我不明白您试图实现的目标。如果在Catalog
中有多个T1
类型的字段,您希望调用Catalog.getEnum(“T1”)返回哪一个字段
?很抱歉,如果我的变量不清楚,我会将它们更改为更具描述性的,有多个枚举,我希望能够通过函数调用获取每个枚举。因此,您希望获取枚举类本身吗?我希望能够将表1传递给另一个类,并使其能够对其进行迭代。我们必须这样做有点令人讨厌,但是这解决了我的问题。谢谢。我们不得不这样做有点令人讨厌,但这解决了我的问题。谢谢。