当前位置: 首页 > 面试题库 >

空安全方法调用Java7

史弘致
2023-03-14
问题内容

我想像这样的代码来获取有关Java7功能的详细信息

public String getPostcode(Person person)
{
    if (person != null)
    {
        Address address = person.getAddress();
        if (address != null)
        {
            return address.getPostcode();
        }
    }
    return null;
}

可以做这样的事情

public String getPostcode(Person person)
{
    return person?.getAddress()?.getPostcode();
}

但坦白说对我来说还不太清楚。请解释一下?


问题答案:

Null-safe方法调用是针对Java 7提出的,作为Project Coin的一部分,但并未最终发布。

在此处查看所有建议的功能以及所有最终选择的功能-https:
//wikis.oracle.com/display/ProjectCoin/2009ProposalsTOC

就简化该方法而言,您可以进行一些更改:

public String getPostcode(Person person) {

    if (person == null) return null;
    Address address = person.getAddress();
    return address != null ? address.getPostcode() : null;
}

我认为您没有比这更简洁明了的了。恕我直言,试图将该代码合并为一行,只会使代码不那么清晰和可读性差。



 类似资料:
  • 从2.0版本开始Spring Security 改进了对服务层方法的安全支持,它提供了对JSR-250注解安全支持以及框架的原生@Secured注解的支持。从3.0开始你也可以使用新的基于表达式的注解。你可以将安全应用到单个bean.使用intercept-methods元素装饰Bean的声明。或者你可以在使用AspectJ风格的切入点应用安全到整个服务层的多个Bean类。 <global-met

  • 番石榴的模式很棒,因为它有助于用null消除歧义。当链的第一部分可能不存在时,转换方法非常有助于创建空安全方法链,但当链的其他部分不存在时则不有用。 这个问题与Guava可选类型有关,当转换返回另一个可选时,它会问本质上相同的问题,但对于不同的用例,我认为这可能不是的预期用途(处理错误)。 考虑一个方法<代码>可选 在中间方法可能返回/的常见情况下,似乎没有一种优雅的方法来链接调用。例如,假设有一

  • 问题内容: 如果一个同步方法调用另一个同步方法,那么线程安全吗? 问题答案: 是的,将方法标记为时,您实际上是在这样做: 当线程调用从method1进入method2时,它将确保它持有对的锁定,该锁定已经存在,然后可以通过。 当线程直接进入method1或method2时,它将阻塞直到获得锁(),然后进入。 正如詹姆斯·布莱克(James Black)在评论中指出的那样,您必须了解方法主体内部的操

  • 我一直在学习如何构建一个类似Instagram的社交媒体应用程序的教程,尽管我的代码与教程中的代码相同,但当我试图显示用户的帖子时,我得到了这个错误: building FutureBuilder(脏,状态:_FutureBuilderState#0C840)引发了以下NosuchMethodeRor:方法“[]”是在NULL上调用的。接收者:null尝试调用:

  • 我们在hello-world-test的基础上,我们新建了一个名为method-security的 Gradle 项目。 本项目用于演示方法级别的安全设置。 build.gradle 修改 build.gradle 文件,让我们的method-security项目成为一个新的项目。 修改内容也比较简单,修改项目名称及版本即可。 jar { baseName = 'method-securi

  • 从2.0开始Spring Security对服务层的方法的安全有了实质性的改善。他提供对JSR-250的注解安全支持象框架原生的@Secured注解一样好。从3.0开始你也可以使用新的基于表达式的注解。你可以应用安全到单独的bean,使用拦截方法元素去装饰Bean声明,或者你可以在整个服务层使用AspectJ风格的切入点保护多个bean。 EnableGlobalMethodSecurity 我们