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
的情况下运行。为什么您不能在调用端使用特性
?我会对实际使用您的代码的客户端代码感兴趣。我不知道如果它还不知道子类型,它将如何尝试调用子类型的方法。你能举个例子说明你打算如何使用这个方法吗?