关于工厂设计模式通过反思

我在工厂模式上进行研发我已经开发了下面的代码,现在我知道子类是Dog和Cat,但是请告诉我如果我希望通过在main中传递类名reflection来实现同样的事情。 java的

public abstract class Animal { public abstract String makeSound(); } public class Dog extends Animal { @Override public String makeSound() { return "Woof"; } } public class Cat extends Animal { @Override public String makeSound() { return "Meow"; } } public class AnimalFactory { public Animal getAnimal(String type) { if ("canine".equals(type)) { return new Dog(); } else { return new Cat(); } } } public class Main { public static void main(String[] args) { AnimalFactory animalFactory = new AnimalFactory(); Animal a1 = animalFactory.getAnimal("feline"); System.out.println("a1 sound: " + a1.makeSound()); Animal a2 = animalFactory.getAnimal("canine"); System.out.println("a2 sound: " + a2.makeSound()); } } 

请告诉我如何在其中添加reflectionfunction,以便我甚至不需要确定类型,只需传递主java中的类名和该子类的对象即可创建

为此,您的CatDog类必须位于包your.package中的自己的文件中,并具有默认构造函数:

 public class AnimalFactory { public Animal getAnimal(String type) { return (Animal) Class.forName("your.package." + type).newInstance(); } }