java中把实现接口的类自动注入另一个类的list属性
时间: 2024-03-27 07:36:58 浏览: 49
在Java中,可以使用依赖注入(Dependency Injection,简称DI)的方式实现自动注入实现接口的类的对象到另一个类的List属性中。依赖注入可以通过构造函数、Setter方法或字段注入的方式来实现。
以构造函数注入为例,我们可以在另一个类的构造函数中接受一个Animal接口类型的List参数,然后在创建该类的对象时,将实现了Animal接口的类的对象列表传递给构造函数。例如:
```
public interface Animal {
void makeSound();
}
public class Dog implements Animal {
public void makeSound() {
System.out.println("Woof!");
}
}
public class Cat implements Animal {
public void makeSound() {
System.out.println("Meow!");
}
}
public class Zoo {
List<Animal> animals;
public Zoo(List<Animal> animals) {
this.animals = animals;
}
public void makeSounds() {
for (Animal animal : animals) {
animal.makeSound();
}
}
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
List<Animal> animals = new ArrayList<Animal>();
animals.add(dog);
animals.add(cat);
Zoo zoo = new Zoo(animals);
zoo.makeSounds();
}
}
```
在这个例子中,我们创建了一个Zoo类,该类有一个构造函数,接受一个Animal接口类型的List参数,用于将实现了Animal接口的类的对象列表注入到animals属性中。在makeSounds()方法中,我们遍历animals列表,并调用每个Animal对象的makeSound()方法来输出各自的声音。在main()方法中,我们创建了一个Dog对象和一个Cat对象,并将它们添加到animals列表中,然后创建了一个Zoo对象,将animals列表传递给构造函数。最后,我们调用Zoo对象的makeSounds()方法来输出各个Animal对象的声音。
阅读全文