java - java函数返回说明
问题描述
我有个问题:
我有这个代码
public Player returnPlayerCurrentTeam(String playerName) {
for (Player p : currentTeam) {
if (p.getName() == playerName) {
return p; // position A
}
}
return null; //position B: why do I have put "return null" or "return p" here? (i.e. return p or return null)
}
我不知道为什么我需要在位置 B 放置一个“return null”语句或一个“return p”语句。如果我假设 currentTeam 必须有一个与 playerName 给出的名称匹配的球员,这是否意味着我的 for 循环将找到匹配后退出并从位置 A 退出?如果是这样,为什么我需要在位置 B 有另一个 return 语句?
我被要求放它是因为 IDE 说“缺少返回语句”,所以通过猜测,我知道我必须在那里放一个返回语句。
另一个问题是“null”是 Player 子类的对象吗?因为我将我的返回类型指定为 Player。并且将“return null”放在那里似乎解决了将“return p”放在那里的问题B,那么这是否意味着“null”是Player的子类?(据我了解,可以返回 Player 的任何子类,是真的吗?)
谢谢你
解决方案
因为可能找不到名字。您可以将第一个找到的播放器保存到局部变量(并且可能结束循环)。这消除了差异。此外,Object.equals(Object)
用于比较引用类型(不是==
)。像,
public Player returnPlayerCurrentTeam(String playerName) {
Player foundPlayer = null;
for (Player p : currentTeam) {
if (p.getName().equals(playerName)) {
foundPlayer = p;
break;
}
}
return foundPlayer;
}
最后,null
实际上是Java中的一种特殊类型,表示没有价值。
推荐阅读
- r - 删除 igraph 中的最大派系
- azure-virtual-network - 将现有 Azure 容器实例添加到 VNET
- scala - 由于 Databricks 不公开支持 spark-redshift 库,因此使用 Scala spark 从 Redshift 读取/写入 Redshift 的最佳方法是什么
- python - 我在 Heroku 上收到 404 错误,但它在本地工作
- pine-script - 如何使标签在右侧对齐?
- angular - 如何在文本区域内映射键 TAB
- spring-boot - 当原始代码正常工作时,为什么我的单元测试没有通过?
- orm - ORM 可以代表所有可能的 SQL 查询吗?
- javascript - Puppeteer 阻塞函数内部的变量
- firebase - 即使操作成功,Firebase 也会显示权限被拒绝