簡體   English   中英

如何在 Java 中執行 object.getClass().getName()

[英]How to do object.getClass().getName() in Java

我想實現類, FoodFoodFactory ,以便它們滿足以下輸入和輸出。

//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

假設我們有以下約束:

  1. 只寫FoodFoodFactory兩個類
  2. 只允許 java.util.*

我不知道如何讓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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM