[英]How to do object.getClass().getName() in Java
我想實現類, Food
和FoodFactory
,以便它們滿足以下輸入和輸出。
//Input:
FoodFactory ff = new FoodFactory();
Food f1 = ff.getFood('Fruit');
Food f2 = ff.getFood('Meat');
f1.serveFood();
f2.serveFood();
System.out.println(f1.getClass().getSuperClass().getName());
System.out.println(f1.getClass().getName());
System.out.println(f2.getClass().getName());
//Output:
I'm serving Fruit
I'm serving Meat
Food
Fruit
Meat
假設我們有以下約束:
Food
和FoodFactory
兩個類 我不知道如何讓getClass().getName()
在不同的情況下工作。 我只能得到FoodFactory
。
謝謝!
看起來您正在使用 Java 練習一些 OO。 如果你問一個疑問而不是完整的場景會更好。
但是,我將在此處粘貼一個示例,您可以提出任何疑問。 下面的 FoodFactory 類,請注意,對於名稱,您將獲得正確的 Object。
public class FoodFactory {
public Food getFood(String food) {
if ("Meat".equals(food)) {
return new Meat();
} else if ("Fruit".equals(food)) {
return new Fruit();
}
throw new IllegalArgumentException("No food found with name " + food);
}
}
應該創建兩個 Food 類,在本例中為 Meat 和 Fruit。
public class Meat extends Food {
}
您的食物將根據當前課程打印消息。 其他人將繼承該行為。
public class Food {
public void serveFood() {
System.out.println("I'm serving " + getClass().getSimpleName());
}
}
然后您可以簡單地運行您的場景並注意 getClass 將針對正確的層次結構運行。
FoodFactory ff = new FoodFactory();
Food f1 = ff.getFood("Fruit");
Food f2 = ff.getFood("Meat");
f1.serveFood();
f2.serveFood();
System.out.println(f1.getClass().getSuperclass().getSimpleName());
System.out.println(f1.getClass().getSimpleName());
System.out.println(f2.getClass().getSimpleName());
試着玩弄它並理解它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.