Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何返回';是否将指定为特定类的子类型?_Java - Fatal编程技术网

Java 如何返回';是否将指定为特定类的子类型?

Java 如何返回';是否将指定为特定类的子类型?,java,Java,本质上,我有一个枚举,我想返回一个与该枚举值对应的类的实例。所有这些实例都是特定类的子类。我将展示一个示例: public Trait returnTrait(EnumX enum) { switch (enum) { case EnumX.TRAITSUBCLASS1: { return new TraitSubClass1(); } case EnumX.TRAITSUBCLASS2():

本质上,我有一个枚举,我想返回一个与该枚举值对应的类的实例。所有这些实例都是特定类的子类。我将展示一个示例:

public Trait returnTrait(EnumX enum)
{
    switch (enum)
    {
        case EnumX.TRAITSUBCLASS1:
        {
            return new TraitSubClass1();
        }
        case EnumX.TRAITSUBCLASS2():
        {
            return new TraitSubClass2();
        }
    }
}

但是,当我使用上面的代码时,返回被转换为仅仅是Trait,并且特定于其类型的方法不可用,只有Trait中的方法可用。我怎样才能使这个方法的返回类型仅仅是扩展Trait的类呢?你不能真正做你想做的事。您可以将该方法设置为泛型,但随后您将在可能发生
ClassCastException
的情况下运行。为什么您不能在调用端使用
特性
?我会对实际使用您的代码的客户端代码感兴趣。我不知道如果它还不知道子类型,它将如何尝试调用子类型的方法。你能举个例子说明你打算如何使用这个方法吗?你不能真正做你想做的事情。您可以将该方法设置为泛型,但随后您将在可能发生
ClassCastException
的情况下运行。为什么您不能在调用端使用
特性
?我会对实际使用您的代码的客户端代码感兴趣。我不知道如果它还不知道子类型,它将如何尝试调用子类型的方法。你能举个例子说明你打算如何使用这个方法吗?