ThisIsAJFrameExtendingClass

ThisIsAJFrameExtendingClass

好的,我不是Java入门者,碰巧的是,我在学习更多有趣的东西(例如MySQL,Servlet,Java EE,JDBC等)时忘记了一些关于核心Java的知识。所以不要像我是初学者那样对答案作框架。现在的问题.....

我正在编写一个扩展JFrame的类(让我们说ThisIsAJFrameExtendingClass),并且为了最大程度地减少与整个项目的混淆,我还想在ThisIsAJFrameExtendingClass中放置一些其他实用程序方法。我打算让此类(ThisIsAJFrameExtendingClass)从用户那里寻求某些输入,然后;自杀(即dispose())。因此,我的问题是,如何在类内独立使用实用程序方法,而不会在用户屏幕上弹出任何JFrame。

我想在ThisIsAJFrameExtendingClass类中使用多个构造函数的解决方案,其中,调用无参数构造函数返回JFrame,第二个构造函数带有布尔参数可以访问实用程序方法。

[更新]

哦....我只是有一个想法,该实用程序方法具有ArrayList的返回类型,因此,假设该实用程序方法称为utilMethod()然后:

ArrayList<String> pring = new ThisIsAJFrameExtendingClass().utilMethod();

上面的代码将输出任何JFrame吗?

最佳答案

您可以将实用程序方法设置为static,在这种情况下,可以使用ThisIsAJFrameExtendingClass.<method name>调用它们而无需创建实例。

关于构造函数的东西对我来说真的没有意义。类的构造函数始终返回该类的实例。由于传入的参数,它无法返回“其他”。

[编辑以回答问题的更新]:

new ThisIsAJFrameExtendingClass()将创建您的类的实例,并运行其构造函数(以及所有超类的默认构造函数)。这可能会分配继承树中每个构造函数所需的其他资源(例如其他Swing组件或其他)。这样就创建了一个JFrame,但是如果您仅调用utilMethod()并且从不挂起对框架的引用,则将在将来的某个时刻对其进行垃圾回收并释放其资源。

创建JFrame实例以在其上调用单个实用程序方法并不是处理事情的特别有效的方法,但是不会引起任何问题。 (如Chad所说,默认情况下JFrame是不可见的,因此,如果您在“ util”模式下使用它,则用户将看不到任何内容)。

至于返回ArrayList,作为使用集合时的一般规则,您应该返回有意义的最高级接口,而不是具体的类。因此,在这种情况下,请考虑返回List<String>甚至Collection<String>

10-07 22:51