gpt4 book ai didi

java - Spring Injecting Bean Reference打印内存地址而不是值

转载 作者:行者123 更新时间:2023-11-30 07:22:17 26 4
gpt4 key购买 nike

我已经编写了一个示例代码来使用 setter 方法练习 Spring Bean 注入(inject)。但是在我的输出中,我得到了一个内存地址而不是我需要的值(在列表元素列表中作为第一个元素)。

我认为这是由于 ref bean="address1"声明中的一些错误。

如果你能帮助我纠正这个错误,我将不胜感激

这是我得到的输出

列表元素:[com.springtutorial.Address@1b6101e, 列王的纷争, 剑雨, 群鸦的盛宴, 魔龙的狂舞]地址:临冬城

这是 Bean 类代码

<bean id="javaCollection" class="com.springtutorial.JavaCollection">
<property name="addressList">
<list>
<ref bean="address1"/>
<value>Clash of Kings</value>
<value>Storm of Swords</value>
<value>Feast for Crows</value>
<value>Dance with Dragons</value>
</list>
</property>

</bean>

<bean id="address1" class="com.springtutorial.Address">
<property name="address" value="Winterfell"/>
</bean>

这是地址类代码

public class Address {

String address;

public String getAddress() {
System.out.println("Address :"+address);
return address;
}

public void setAddress(String address) {
this.address = address;
}

Java 集合类`public class JavaCollection {

List addressList;

public List getAddressList() {
System.out.println("List Elements: " + addressList);
return addressList;
}

public void setAddressList(List addressList) {
this.addressList = addressList;
}

}

`

主类是这样的

public static void main(String[] args) {

ApplicationContext ctx = new ClassPathXmlApplicationContext("Beans.xml");
JavaCollection jc = (JavaCollection) ctx.getBean("javaCollection");
Address obj = (Address) ctx.getBean("address1");

jc.getAddressList();
jc.getAddressSet();
jc.getAddressMap();
jc.getAddressProp();

obj.getAddress();
}`

最佳答案

这不是内存地址,而是 Object.toString() 的通常输出,这是类名和哈希码

Spring 期待您的 List包含 String实例,但您正在尝试添加 Address . Spring 简单地调用 toStringAddress 上使其“适合” Collection 。

您没有声明您的 List作为参数化,但我怀疑存在 String 值对象,例如<value>Clash of Kings</value> , 导致 Spring 期待一个 List<String>相反。

如果您还没有阅读它,现在可能是阅读泛型的好时机。

关于java - Spring Injecting Bean Reference打印内存地址而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854616/

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