当前位置: 首页 > 知识库问答 >
问题:

方法中的NullPointerException返回类型Object[重复]

戚育
2023-03-14

为什么下面要抛出NullPointerException?:

public static Object myTest() { 
    boolean x = false; 
    boolean y = false; 
    return x && y ? new Object() : x ? x : y ? y : null;
}

public static void main(String [ ] args) {
    myTest(); 
}
public static Object myTest() { 
    boolean x = false; 
    boolean y = false; 
    return x && y ? new Object() : x ? x : y ? y : (Object) null;
}

public static void main(String [ ] args) {
    myTest(); 
}
public static Object myTest() { 
    Boolean x = false; 
    Boolean y = false; 
    return x && y ? new Object() : x ? x : y ? y : null;
}

public static void main(String [ ] args) {
    myTest(); 
}
public static Object myTest() { 
    boolean x = false; 
    boolean y = false; 

    if(x && y) {
        return new Object(); 
    } else if(x) {
        return x; 
    } else if(y) {
        return y;
    } else {
        return null;
    }
}

public static void main(String [ ] args) {
    myTest(); 
}

提前致谢

共有1个答案

张丁雷
2023-03-14

如果为了可读性添加一些括号:

return (x && y) ? (new Object()) : (x ? x : (y ? y : null));

您可以在y处看到这一点?y:null,编译器将尝试解框null(以便类型匹配),从而引发NPE。

 类似资料:
  • 我正在实现我自己的通用链表类,它有一个名为的实例方法,它可以制作链表的数组副本并返回它。但是,每当我尝试在实例上调用该方法时,我都会收到错误消息“SLList.this不能从静态上下文中引用”。我搜索了一下,有些人说这是因为我没有在实例上调用该方法,但我确实调用了。 下面是该类: 它有一些方法,比如<code>addLast、addFirst</code>它们没有问题。 是我不断收到错误消息的行,

  • 问题内容: 我正在以以下方式使用jdbcTemplate.queryForList执行命名查询: SQL查询为: 但是,当以以下方式提取列表的内容时: 我收到一个错误: 如何将这个linkedMap转换为所需的对象? 谢谢 问题答案: 为了将查询的结果集映射到特定的Java类,最好使用RowMapper将结果集中的列转换为对象实例(假设您对在其他地方使用该对象感兴趣)。 有关如何使用行映射器的信息

  • 问题内容: 如果有两个方法,则它们具有不同的参数,并且它们的返回类型也 不同 。像这样: 如果返回类型相同,则当然是 重载 。但是由于返回类型 不同 ,我们还可以将其视为 过载 吗? 问题答案: 考虑过载的以下几点: 在Java中重载方法的首要原则是更改方法签名。方法签名由参数数量,参数类型和参数顺序(如果它们是不同类型)组成。 } 方法的返回类型从不属于方法签名的一部分,因此仅更改方法的返回类型

  • 问题内容: 我在这里多次看到类似的问题,但有一个很大的不同。 在其他问题中,返回类型将由参数确定。我想要/需要做的是通过解析后的值确定返回类型。从我收集到的信息来看,以下方法可行: 我只是想确保在我搞砸任何东西之前,它有机会工作。提前致谢。 问题答案: 你做不到 Java返回类型必须是固定的基本类型或对象类。我敢肯定,您能做的最好的事情就是返回一个包装器类型,该包装器类型具有可获取各种可能类型的值

  • 问题内容: 这就是我想要做的。使用反射,我想获取所有方法及其返回类型(非泛型)。我一直在这样做。但是,当我遇到返回类型未知的方法时,我遇到了限制。 我如何知道方法的返回类型是否通用?我没有奢求在运行时拥有对象。我正在尝试使用Google 或使用抽象类来获取类型信息。我想关联到对象的方法。 有人认为Java不保留通用信息。在这种情况下,为什么第一次强制转换有效而第二次强制转换无效。 任何帮助表示赞赏

  • 我正在实现我自己的泛型链表类,它有一个名为的实例方法,该方法生成链表的数组副本并返回它。然而,每当我试图在实例上调用该方法时,我总是得到错误消息“sllist.this cannot be referenced from a static context”。我搜索了一下,有些人说这是因为我没有在实例上调用那个方法,但我确实调用了。 下面是类: 它有一些方法,如,它们都没有问题。 是我不断收到错误消