什么是开关类(来源于org.eclipse.emf.ecore.util.Switch<T>
)用于?什么是Switch类用于?
的javadoc解释它作为
一个抽象基类为所有开关类。
这没有帮助,因为我从来没有听说过“开关班”之前。
什么是开关类(来源于org.eclipse.emf.ecore.util.Switch<T>
)用于?什么是Switch类用于?
的javadoc解释它作为
一个抽象基类为所有开关类。
这没有帮助,因为我从来没有听说过“开关班”之前。
switch类是一个类,它允许您根据模型对象(在本例中为EMF模型对象)选择和实例化类型的具体实例。我见过的例子表明它对于为EMF模型实例化类型特定的适配器很有用。
您可以通过覆盖doSwitch方法来使用它。例如,假设我有一个模型对象,我要实例对应于type
值在我的模型适配器对象:
public class ExampleSwitch extends Switch<Adapter> {
public Adapter doSwitch(EObject eobject) {
if (eobject instanceof MyModel) {
switch (eobject.getType()) {
case TYPEA:
Adapter result = createTypeAAdapter(eobject);
if (result == null) {
return createDefaultAdapter(eobject);
}
return result;
case TYPEB:
...
default:
}
}
}
}
日食org.eclipse.emf.common.notify.AdapterFactory然后将使用此来返回一个适配器。
public class MyAdapterFactory implements AdapterFactory {
public boolean isFactoryForType(Object o) {
return (o instanceof MyModel);
}
public Adapter adapt(Notifier notifier, Object type) {
return mySwitch.doSwitch((EObject)notifier);
}
}
我从here拉此信息。我没有证实这一点,但显然EMF发生器可以为你自动生成AdapterFactories和Switch类。
Java中的所有东西都是类。 (除原语)。所以当你使用switch
时,在幕后你可以调用一个具有switch
所有逻辑的类。 Switch<T>
可能是其他交换机类在您使用它们时继承和实现方法的类。例如,您可以使用switch(int)
,也可以使用switch(String)
,这两种功能都不同,必须在某处进行定义。
这是一个eclipse框架类,用于抽象工厂根据模型对象的类型创建对象。没有正确使用Eclipse RCP,我不觉得我可以回答整个问题。但有一些信息[这里](https://books.google.co.uk/books?id=ff-9ZYhvPwwC&pg=PA207&lpg=PA207&dq=eclipse+%22switch+classes%22&source=bl&ots=yAWqE2sSsF&sig=g0Z6CGmXW1AHu6eb39e2zW36CSs&hl=zh-CN&sa=X&ved= 0CD4Q6AEwBGoVChMIv7HMjY6VyQIVhb8UCh2Yhgxx#v = onepage&q = eclipse%20%22switch%20classes%22&f = false) – AndyN
如果您总结说,要删除对该外部网站的依赖关系,那么我会接受它作为一个问题。 –