gpt4 book ai didi

java - Spring 的泛型

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

我想使用泛型合并这两个方法,唯一的区别是转换类“ServicesBO”和“ServicesDAO”。 bean 的名称可以作为字符串参数传递。是否可以使用类型转换类的泛型来合并它们?

private void getFieldBO(){
ServicesBO services = (ServicesBO)appContext.getBean("ServicesBo");
List<users> list = services.getUsers();

for (users user: list)
System.out.println("BO: " + user.getName());
}

private void getFieldDAO(){
ServicesDAO services = (ServicesDAO)appContext.getBean("ServicesDAO");
List<users> list = services.getUsers();

for (users user: list)
System.out.println("DAO: " + user.getName());
}

提前致谢查克。

最佳答案

如果没有 ServicesDao 和 ServicesBO 都实现的通用接口(interface),您将无法在没有反射的情况下调用 getUsers。

因此假设您有一个通用接口(interface):

public interface UserProvider {
List<User> getUsers();
}

您可以按如下方式定义该方法:

private void printUsers(String beanName) {
UserProvider provider = appContext.getBean(beanName, UserProvider.class);
List<User> users = provider.getUsers();

for (User user : users)
System.out.println("DAO:" + user.getName());
}

其他一些事情:

  • 通常类名以大写开头(用户而不是用户)
  • 类名可能应该是 User,因为 getName 方法表明该类仅包含单个用户
  • 我认为使用 spring 注入(inject) Bean 比从应用程序上下文中查找它们更好。

希望有帮助。

关于java - Spring 的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018986/

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