gpt4 book ai didi

Java 的 toString 方法未被重写

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:19 25 4
gpt4 key购买 nike

我之前发表了一篇关于对象的 toString 方法在我定义的类中未被重写的文章。这是对我的previous post的引用.

我有一个 Member 类,其中包含与某个人对应的数据(姓名、电话号码、生日等)。在我的应用程序中,我查询数据库以构建数据库中包含的满足某些特定条件的所有成员的数组。我想做的是在这个成员数组上构建一个 JComboBox ,所以为了做到这一点,我尝试构建一个字符串数组,代表每个用户的用户名、姓氏和名字(用户名(姓氏、名字))。例如,数据库将返回jzwiz (Taylor, Billy)。为此,我已经重写了 Member 类中的 toString 方法,如下所示:

@Override 
public String toString()
{
return this.name + " (" + this.lastName + ", " + this.firstName + ")";
}

下面是构建 JComboBox 组件的代码:

String[] user_names = this.model.getMemberNames();
this.memberInput = new JComboBox(user_names);

getMemberNames 函数执行以下操作:

/**
* Returns an array of all of the names and logins of the members in the
* database.
* @return String[] user_names: The names and logins of all of the members in
* the database.
* @throws MemberNotFoundSignal
*/
public String[] getMemberNames() throws MemberNotFoundSignal
{
CodeSource cs = Member.class.getProtectionDomain().getCodeSource();
Method[] methods = Member.class.getDeclaredMethods();

Member[] members = this.rscMgr.getAllMembers();
String[] user_names = new String[members.length];
for (int i = 0; i < members.length; i++)
{
user_names[i] = members[i].toString();
}

return user_names;
}

我预计 members[i].toString() 将返回重写的 Member.toString 函数,但事实并非如此。

当我调试程序时,getCodeSource 显示正在使用的 jar 文件的路径。 我已经验证该 jar 已更新到最新版本(该版本包括重写的 toString 方法),但 getDeclaredMethods 函数不显示 toString 方法。就好像我所做的更改没有反射(reflect)在更新的 jar 中。

在进行更改后,我必须通过 ANT 构建文件清理并重建源代码,但在每次构建之后,我都会验证 jar 是否已更新到最新版本。还有什么可能导致此问题?我正在寻找一些简单的东西吗?

编辑:这是一个更新。我发现实际编译的源代码没有被更新,但是当我从构建文件中清理和重建时,jar 上的时间戳正在更新。有什么解决方法吗?

最佳答案

我想我知道发生了什么事;确保您的类路径中没有旧的 jar 文件副本。如果您在容器中运行它,请确保清除它保留的旧类的所有副本。

关于Java 的 toString 方法未被重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20150050/

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