java中的泛型类型:如何定义一个返回多个不同类型的函数

Jackie Yu
@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);
      }
   }
}

但是,编译器提示了异常:

在此处输入图片说明

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

Manh Quyet Nguyen

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java泛型:在一个集合类型期运用多种泛型类型

Java泛型:使用一个函数签名干净的方法来处理两个泛型类型

如何在Java中一个接一个地迭代具有不同类型的两个泛型列表?

如何制作一个用两个不同的泛型类型扩展Iterable的Java接口?

键入一个根据可选输入返回两种不同类型的函数

Java泛型函数:如何返回泛型类型

Java中不同类型的泛型类的静态成员是否不同?

如何使用Golang从一个函数返回不同类型的结构?

如何在使用泛型的方法中返回不同的类型?

不同类型的泛型

如何指定一个java.util.Function返回另一个具有协方差类型的泛型类型?

在PostgreSQL中,如何声明一个接受不同类型参数的可变参数函数?

Python-在一个函数中拼合两种不同类型的列表的列表

如何从一个函数返回多个类型?

将Dictionary <string,List <Model >>类型的两个泛型组合到另一个相同类型的泛型中

创建一个返回具有现有类继承关系的不同类型的函数

Python TypeHint一个根据输入返回不同类型的函数

通过TypeScript中的另一个泛型类型保留泛型类型

泛型-返回不同类型的对象

用不同的泛型类型实现同一个泛型Java接口的多个实例?

如何使用泛型将一个RecyclerView适配器用于不同类型的对象?

Java,Lambda:如何从具有多个不同类型列表的类中选择一个列表?

如何从 Rust 中的成员函数返回泛型类型

从 Kotlin 调用一个定义了多个边界的 Java 泛型方法,一个边界本身就是一个泛型类型

有一个方法的泛型类型取决于 TypeScript 中类的泛型类型

如何声明一个泛型函数,该函数返回一个具有相同参数但其参数返回类型不同的函数(反应钩子)

Java 泛型:如何告诉 Java 泛型类型有一个方法

基于请求/响应的 rxjs WebSocketSubject 的不同类型(下一个 msg 类型,订阅 msg 类型),但只允许一个泛型

如何在不同类型的 Java 中创建一个包含 2 个数组的数组