gpt4 book ai didi

java - java中的通用类型: How to define a function with multiple different type returned

转载 作者:行者123 更新时间:2023-12-02 01:38:35 25 4
gpt4 key购买 nike

@Service
public class Animal {
public String name;
}
@Service
public class Dog extends Animal {
public String name;
}

@Service
public class Cat extends Animal {
public String name;
}

在spring boot项目中,我想通过使用spring框架提供的ApplicationContext来获取一个特定的bean,这是我写的一个简单的例子来说明:

@Component
public class AnimalLocator implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (PayServiceLocator.applicationContext == null) {
PayServiceLocator.applicationContext = applicationContext;
}
}

public <T extends Animal> T getService(String name) {
if("Cat".equals(name) {
applicationContext.getBean(name, Cat.class);
}
if("Dog".equals(name) {
applicationContext.getBean(name, Dog.class);
}
}
}

但是编译器提示异常:

enter image description here

马赛克部分应该是狗或猫。我认为它应该有效,因为 T 已经扩展了 Animal 类,但它没有,所以有人对此有任何想法吗?谢谢!

最佳答案

由于您使用 bean 类来访问 bean 实例,因此可以直接将类作为参数传递:

public <T extends Animal> T getPayService(String name, Class<T> payClass) {
return applicationContext.getBean(name, payClass);
}

关于java - java中的通用类型: How to define a function with multiple different type returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com