考虑以下课程
class A{
public void init(){
//do this first;
}
public void atEnd(){
//do this after init of base class ends
}
}
class B1 extends A{
@Override
public void init()
{
super.init();
//do new stuff.
//I do not want to call atEnd() method here...
}
}
Run Code Online (Sandbox Code Playgroud)
我有几个已经开发的B1,B2,... Bn子类.所有这些都扩展了A类.如果我想在所有这些中添加一个新功能,最好的方法是在A类的方法中定义它.但条件是该方法应始终在之前自动调用子类的init()方法结束.一种基本的方法是在子类的init()方法结束时再次添加atEnd()方法调用.但有没有其他方法可以做到这一点?
我正在尝试按照给定的文章创建选项卡式属性视图:Eclipse 选项卡式属性视图
根据文章,org.eclipse.ui.views.properties.tabbed.propertyTabs扩展点可用于添加新选项卡。
<extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
<propertyTabs contributorId="mview.views.SampleView">
<propertyTab
category="sample"
id="mview.ButtonTab"
label="Button"/>
<propertyTab
afterTab="mview.ButtonTab"
category="sample"
id="mview.AdvancedTab"
label="Advanced"/>
</propertyTabs>
</extension>
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,属性视图的选项卡因视图中选择的项目而异。所以我必须根据所选项目动态地将选项卡添加到扩展中。
请建议如何这样做。
更新:这样做的方法之一(我不确定是否建议)是使用 IExtensionRegistry.addContribution() 方法。在这里,我提供了一个包含所需扩展详细信息的 inputstream 对象。这在运行时向属性视图添加了选项卡。但是,随着列表查看器中项目选择的更改,属性视图不会更新。请建议这是否是这样做的正确方法。