gpt4 book ai didi

Java 如何使用instanceof返回一个新的对象类型?

转载 作者:行者123 更新时间:2023-12-02 08:49:02 25 4
gpt4 key购买 nike

如果您有以下情况

  1. 界面:用餐
  2. Hotdog 实现 Meal
  3. Burger 实现 Meal
  4. 沙拉实现餐食

如何创建一个方法来接受这些对象类型之一以返回适当的对象?

示例:

Method makeFood(HotDog)

if(HotDog instanceof Meal)
return new HotdogObject();

你如何正确地做到这一点?

我正在合作

static public Food createMeal(Meal f)
throws Exception
{

if (f instanceof Hotdog)
{
return f = new HotDog();
}
if (f instanceof Burger)
{
return f = new Burger();
}

throw new Exception("NotAFood!");
}

最佳答案

大多数情况下,您将类与其实例混淆了。 instanceof 运算符,正如其名称所示,验证一个对象是否是一个类的实例,而不是一个类是另一个类的子类。通过反射可以最优雅地解决您的特定问题:

public static <T extends Meal> T createMeal(Class<T> c) {
try { return c.newInstance(); }
catch (Exception e) { throw new RuntimeException(e); }
}

例如,如果您想要一个汉堡,您可以调用

Burger b = createMeal(Burger.class);

但是,如果您确实想要另一个与已有实例类型相同的实例,那么代码将是

public static Meal createMeal(Meal x) {
try { return x.getClass().newInstance(); }
catch (Exception e) { throw new RuntimeException(e); }
}

关于Java 如何使用instanceof返回一个新的对象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10657983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com