【发布时间】:2014-02-09 21:15:33
【问题描述】:
我已经使用 SWT/JFace 实现了一个复杂的视图,不幸的是我一直在为不同的元素使用很多静态成员。现在我想将这些元素重构为实例变量,但也有很多外部类和方法依赖于这些。
例如,这个视图中的TreeViewer 被声明为静态的,我实现了一个简单的静态getTreeViewer 方法,它被称为例如通过 JFace 动作,再次静态。效果很好。
所以我正在考虑为扩展org.eclipse.ui.part.ViewPart 的视图类实现一种getter 方法。我希望通过这种方式,如果需要,我可以将运行时 Eclipse 中的这个 View 的实例返回给外部类,这样就可以访问以前静态的 now 实例字段的实际值.
但是现在,没有静态字段和方法,我要么必须使用new关键字才能调用非静态方法,这显然会导致NPE,因为不会有任何createPartControl()方法叫。或者我应该能够以某种方式返回已经实例化的视图?而这正是我缺乏的地方?整个 View 的返回方法应该是什么样的,以便可以在其实际状态下访问其内部?有没有一种简单的方法可以做到这一点?谢谢!
【问题讨论】:
-
忘记提了,但很可能很清楚,这不是类似单例的情况,因此没有声明的视图字段来保存它。但必须有某处的实例,可以访问,对吧?
标签: java view static swt jface