gpt4 book ai didi

java - Spring中如何使用泛型?

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

我读了很多在线文章,但找不到答案,我试图使其正确,但无法做到。

任何人都可以帮忙,如何在bean文件中初始化泛型并使其工作吗?

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="collectionDemo" class="com.prashant.Collections6.CollectionDemo">
<constructor-arg index="0" type="String" value="google"/>
<constructor-arg index="1" type="String" value="gooogle"/>
</bean>

</beans>

CollectionDemo.java

public class CollectionDemo<T> {
private T id,phoneNumber;

public CollectionDemo(T id, T phoneNumber) {
super();
this.id = id;
this.phoneNumber = phoneNumber;
}

public T getId() {
return id;
}

public void setId(T id) {
this.id = id;
}

public T getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(T phoneNumber) {
this.phoneNumber = phoneNumber;
}

@Override
public String toString() {
return "CollectionDemo [id=" + id + ", phoneNumber=" + phoneNumber
+ "]";
}

}

ColleactionApp.java

package com.prashanth.Collections6;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class ColleactionApp {
public static void main(String[] args) {
ApplicationContext app=new FileSystemXmlApplicationContext
("/src/main/java/com/prashanth/Collections6/beans.xml");
CollectionDemo<String> coll=(CollectionDemo<String>) app.getBean("collectionDemo");
System.out.println(coll);
}
}

最佳答案

您在评论中发布的问题是由于拼写错误造成的

<bean id="collectionDemo" class="com.prashant.Collections6.CollectionDemo">

应该是

<bean id="collectionDemo" class="com.prashanth.Collections6.CollectionDemo">

假设

package com.prashanth.Collections6;

是正确的包名称。

泛型的“问题”是

<constructor-arg index="0" type="String" value="google"/>
<constructor-arg index="1" type="String" value="gooogle"/>

Spring 将使用您指定的类型来匹配构造函数参数。但是类构造函数的参数不是 String 类型,而是 T 类型,会删除为 Object。要么将其更改为

<constructor-arg index="0" type="Object" value="google"/>
<constructor-arg index="1" type="Object" value="gooogle"/>

或完全删除类型

泛型是一个编译时概念。它们在运行时不存在。但是 Spring 在运行时使用反射来生成 bean。在 bean 定义中没有为泛型类型指定类型参数。

关于java - Spring中如何使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700775/

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