我有一个枚举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();


就像其他人一样

10-07 13:59