spring 一接口通过枚举进行多态
时间: 2024-03-20 12:44:36 浏览: 18
可以通过枚举实现Spring接口的多态。具体来说,可以定义一个枚举类型,其中每个枚举值都实现同一个接口,并且每个枚举值都提供自己特定的实现。然后,在Spring中使用该枚举类型作为接口的参数类型或返回类型,即可实现多态。
例如,假设有一个名为Animal的接口,定义了一个eat()方法。可以定义一个枚举类型Animals,其中每个枚举值都实现Animal接口,并提供自己特定的eat()实现。如下所示:
```
public interface Animal {
void eat();
}
public enum Animals implements Animal {
DOG {
@Override
public void eat() {
System.out.println("dog eats meat");
}
},
CAT {
@Override
public void eat() {
System.out.println("cat eats fish");
}
}
}
```
然后,在Spring中可以使用Animals作为Animal接口的参数类型或返回类型,如下所示:
```
@Service
public class AnimalService {
public void feedAnimal(Animals animal) {
animal.eat();
}
}
```
调用该方法时,可以传入Animals枚举值,实现多态。例如:
```
@Autowired
AnimalService animalService;
@Test
public void testFeedAnimal() {
animalService.feedAnimal(Animals.DOG); // 输出:dog eats meat
animalService.feedAnimal(Animals.CAT); // 输出:cat eats fish
}
```