Java方法能否根据方法中的条件返回不同的类型?
是否可以让方法根据条件返回不同的类型?从未广泛学习 Java,但我研究了泛型,如果对参数的依赖不明显,它似乎不适用。基本上像
public ????? func(Object obj)
{
if(obj instanceof class1)
{
return new Integer(1);
}
else if(obj instanceof class2)
{
return "asdf";
}
else
{
return new Double(1.7);
{
}
我可以保证传入的任何参数和返回的任何参数都将始终是一个对象,如果这让事情变得更容易。谢谢您的帮助
回答
您可以声明该方法的返回类型为Object,但仅此而已。
像 Java 这样的强类型语言如此出色的一个重要原因是,它们保证您返回的对象的类型是指定类型的实例,无论您的代码变得多么复杂。如果调用该方法得到的结果可能是 an Integer、 aString或 a Double,那么它们唯一真正的共同点就是它们都是Objects。大多数情况下没有太多用处。您可以检查调用方法中的返回类型以查看它是否是您要查找的类的实例,然后进行强制转换,但这不是面向对象编程的一个很好的用途。
更好的方法是创建一个接口,说明从该方法返回的所有对象应该做什么,然后您可以返回实现该接口的不同类型的对象(或者,扩展一些通用超类)。
例如,假设您想Animal根据不同的条件返回不同的s。您完全可以做到这一点,因为Dog,Cat和Horse都是Animal秒。(我建议避免这样的instanceof检查,但仍然可以作为例子):
public Animal func(Object obj)
{
if(obj instanceof class1)
{
return new Dog();
}
else if(obj instanceof class2)
{
return new Cat();
}
else
{
return new Horse();
{
}