我有一个枚举EnumUtil和一些类ChatUtil,PrefixUtil等。 ChatUtil和PrefixUtil类扩展了Util类。我需要的是一种将它们存储在枚举中的方法。
例:
我有一个需要前缀的类,因此我将调用Enumutil.PREFIX_UTIL,并且它将返回PrefixUtil类。
这是我的代码,我认为它不起作用:
public enum EnumUtil
{
CHAT_UTIL(My ChatUtil classfile),
PREFIX_UTIL(My PrefixUtil classfile);
private final Class<? extends Util> classFile;
private EnumUtil(Class<? extends Util> file)
{
this.classFile = file;
}
public Class get()
{
return this.classFile;
}
}
我知道这肯定行不通,因为它总是返回EnumUtil。另外,我需要提一下,我不知道如何正确使用枚举。我看过很多教程,但都没有找到关于此类问题的任何教程。
这是实际的代码,我所做的就是用My ChatUtil类替换了“ ChatUtil.class”(无实际引号)。
因此,它看起来如下所示:
CHAT_UTIL(ChatUtil.class),
PREFIX_UTIL(Prefixes.class);
这就是我所说的枚举:
前缀前缀= EnumUtil.PREFIX_UTIL;
这是我收到的错误:
不兼容的类型:EnumUtil无法转换为前缀
编辑:
我将通过使Util处理它回到旧方法。它既有效又有效。
感谢您的意见和建议!
最佳答案
Prefixes prefix = EnumUtil.PREFIX_UTIL;
应该
Prefixes prefix = EnumUtil.PREFIX_UTIL.get().newInstance();
但这是完全没有意义的。您已经在调用站点对类名进行了编码,这就是您要避免的说法。您可以将newInstance()放入get()方法中,但是它将返回什么呢?它必须返回Object,所以您必须编写
Prefixes prefixes = (Prefixes)EnumUtil.PREFIX_UTIL.get();
情况越来越糟,类名在调用站点被编码两次。你最好写
Prefixes prefixes = Prefixes.class.newInstance();
或确实
Prefixes prefixes = new Prefixes();
就像其他人一样