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

BlackBerry:覆盖paint()vs subpaint()

田权
2023-03-14
问题内容

制作自定义字段时,在覆盖paint()vs subpaint()方法以呈现字段的自定义部分之间应该考虑什么?

我的代码当前覆盖了paint(),但是我只是阅读了建议实现该subpaint()方法的javadoc
。在我非常简单的自定义字段(例如带有渐变填充的自定义横幅)中,我可以看到的唯一区别是,如果我覆盖paint(),则必须调用super.paint(),但是如果我覆盖了,subpaint()则无需调用super.subpaint()

我意识到,对于更高级的定制,需要考虑一些因素,其中一种方法很可能被认为是不良实践。

我是否应该更改我的基本方法(以及我公司中的基本方法),以选择subpaint()将来默认使用替代方法?

(我希望这不是讨论问题,这不是我的意图,谢谢)


问题答案:

subpaint()是真正用于Manager的,不一定是自定义字段(是的,Manager是一个Field)。它的默认实现是仅遍历其子字段并对其发出paintChild()调用。paint()另一方面,是让Field进行与自身相关的绘图。就您而言,您应该压倒一切paint()

那么,为什么要覆盖subpaint()?您需要是否需要子Field来按一定顺序绘制自己。假设您有一个自定义管理器,该管理器将某些字段相互叠加。如果需要按特定顺序绘制它们,则可以覆盖subpaint()以确保正确的“字段”位于“顶部”。此外,经理paint()会调用它subpaint(),如果您覆盖它,则要记住这一点。



 类似资料:
  • 问题内容: 我们很少有扩展基本类的类。我们注意到我们使用了“退出一些睡眠”方法,并且希望在发生睡眠时进行记录。有没有一种方法可以覆盖Thread.sleep方法,在其中我可以添加一些自定义逻辑(即记录),然后仅调用实际的Thread.sleep()?这样,我就不必更改在我的基类中使用Thread.sleep的所有位置。我也愿意接受其他选择。 问题答案: 您不能重写方法,因为它是本机方法,所以无法对

  • 我正在开发一个Spring集成/引导应用程序。我正在使用一个多文档(src/main/Resources/application.yml)来设置几个配置类的默认值(用@ConfigurationProperties注释)。pplicaiton.yml带有默认值,其中一些需要被覆盖,具体取决于环境。 我可以在目录中使用Java系统属性(-D...=...)、Spring“属性”(--...=...)

  • 问题内容: 我试图在php中覆盖我的位置,但是我仍然在php.ini文件中获得了2 mb的值。 问题答案: 通过进行设置时,这些设置不会有任何效果。 原因是PHP 在 执行脚本 之前 需要这些值。上载时,将在完成上载后执行目标脚本,因此PHP需要事先知道最大大小。 在,虚拟主机配置或文件中进行设置。一个典型的文件如下所示:

  • 问题内容: 我的Java应用程序引用了一个使用log4j日志记录的第三方jar文件。问题是该jar包含自己的log4j.properties文件,这会导致我的机器上的访问被拒绝的异常,但是我无法控制jar文件来更改其内容。 我尝试在应用程序的类路径中添加自己的log4j.properties文件,但似乎没有效果。如果我尝试使用PropertyConfigurator以编程方式导入自己的设置,则lo

  • 在上一章中,我们讨论了超类和子类。 如果一个类从其超类继承一个方法,那么只要它没有标记为final,就有可能覆盖该方法。 覆盖的好处是:能够定义特定于子类类型的行为,这意味着子类可以根据其需求实现父类方法。 在面向对象的术语中,覆盖意味着覆盖现有方法的功能。 例子 (Example) 我们来看一个例子。 class Animal { public void move() { Sy

  • 对于Spring Boot2.1,默认情况下禁用bean重写,这是一件好事。 然而,我确实有一些测试,其中我使用mockito用模拟实例替换bean。在默认设置下,使用这种配置的测试将由于bean重写而失败。 我发现唯一有效的方法是通过应用程序属性启用bean重写: 但是,我真的希望确保测试配置的bean定义设置最小,这一点将由spring在禁用重写的情况下指出。 我正在重写的bean是 在导入到