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

覆盖布尔值时会发生什么情况?

长孙弘壮
2023-03-14

这个问题是关于布尔值而不是布尔值的(但我很想知道两者是否相同)。假设您有一个函数正在对数据执行多次检查,并且在每种情况下它都有特定的响应。您希望函数显示所有无效输入的大小写(以及它们无效的原因),因此您希望检查所有输入(而不仅仅是一个并停止和返回)。使用单个布尔值(如Boolean x=isValidEmail(String email))然后处理它是否无效并在未来的检查中重用x以使您不分配额外的内存,或者应该这样做(Boolean x=isValidEmail(String email), Boolean y=isValidPassword(String密码))。我希望这个问题在我制定它的方式上不会太混乱。我已经放置了一个我试图实现的代码示例来给你一个想法。

        //Checking if email is valid
        Boolean isValidEmail = registrationService.emailIsValid(user.getEmail());
        if(!isValidEmail) {
            model.addAttribute("invalidEmail", true);
        }
        
        //Checking if email length is valid
        Boolean emailIsValidLength = registrationService.emailIsValidLength(user.getEmail());
        if(!emailIsValidLength) {
            model.addAttribute("invalidEmailLength", true);
        }

正如您在这里看到的,我创建了单独的布尔值。重用第一个布尔值并执行

IsValidEmail = registrationService.emailIsValidLength(user.getEmail()); 

而不是创建两个单独的布尔实例?

共有2个答案

邓英卓
2023-03-14

这取决于您的情况,您是稍后使用布尔值,还是验证是一次性的,这不仅仅涉及对象布尔值,

对于一次使用,我通常会这样做:

        if(!registrationService.emailIsValidLength(user.getEmail());) {
            model.addAttribute("invalidEmail", true);
        }
        
        //Checking if email length is valid
        if(!registrationService.emailIsValidLength(user.getEmail());) {
            model.addAttribute("invalidEmailLength", true);
        }

如果以后需要布尔值,我会将结果存储在变量中,因为为什么要再次调用该函数?

如果要返回全局错误消息,将结果存储在单个变量中也是有效的。

使用单独的布尔值,一点也不妨碍java的性能,如果我是你,我会注意数据结构和时间复杂度。

裴俊智
2023-03-14

在javac和JIT有机会进行优化之后,无论哪种方式的成本都是相同的。

写最清楚的东西——这意味着使用一个新变量

(请注意,这与您如何不“创建新实例”有关,几乎可以肯定只创建对现有对象的引用。)

 类似资料:
  • 问题内容: 假设我创建了一个对象,该对象具有ID,firstName,lastName和email,用于实例变量和相应的setter / getter方法。如何,如果我不重写计算中时,它存储在集合对象的对象? 问题答案: 如果不重写hashcode(),则集合将使用Object类中的默认实现。即使根据equals()方法它们相等,此实现也会为不同的对象提供不同的值。 一些集合(例如HashSet,

  • 当您以“正常”方式停止或重新启动tomcat时,正在处理的http请求会发生什么情况?它们将被处理直到响应完成还是http线程被中断?有没有办法配置优雅的停车?

  • 我正在使用log4j2登录我的java应用程序,该应用程序被配置为将日志写入文件。磁盘空间满时会发生什么情况?log4j2是否缓冲日志,直到磁盘刷新?如果是,是否会导致OOM错误?

  • 假设我有一个普通的应用程序,其中我正在使用ApplicationContext ApplicationContext=new FileSystemXmlApplicationContext(“bean.xml”)创建一个Spring应用程序上下文 现在,假设在这个bean.xml有Spring bean的bean定义,所以当我创建应用程序上下文时,Spring容器将为这个实例化和初始化一个对象。

  • 本文向大家介绍当我们尝试覆盖Java中超类的最终方法时,会发生什么?,包括了当我们尝试覆盖Java中超类的最终方法时,会发生什么?的使用技巧和注意事项,需要的朋友参考一下 子类不能重写 在超类中声明为final的 任何方法 。如果我们尝试覆盖超类的最终方法,则会在Java中收到错误消息。 实现方法覆盖的规则 方法声明应与要重写的方法相同。 在尝试覆盖之前,该类(子类)应扩展另一个类(超类)。 子类

  • 问题内容: 好的,我从很多地方和来源都听说过,每当我覆盖equals()方法时,我也需要覆盖hashCode()方法。但是请考虑以下代码 这里的输出为true,完全按照我想要的方式为false,我根本不关心重写hashCode()方法。这意味着hashCode()覆盖是一种选择,而不是每个人都说的强制性选择。 我想要第二次确认。 问题答案: 它对您有用,因为您的代码未使用任何需要API的功能(Ha