首页 > 解决方案 > 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 的任何子类,是真的吗?)

谢谢你

标签: java

解决方案


因为可能找不到名字。您可以将第一个找到的播放器保存到局部变量(并且可能结束循环)。这消除了差异。此外,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中的一种特殊类型,表示没有价值。


推荐阅读