我在Eclipse中编译的混合java / scala项目中使用sezpoz。在查找java注释时,它完全正常(在这里提到一些修改之后:http://imagej.net/pipermail/imagej-devel/2011-January/000305.html)
@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.SOURCE)
@Indexable(type = TIPLPluginFactory.class)
public static @interface PluginInfo {
/**
* The name of the plugin (VfilterScale is Filter so is FilterScale)
* @return
*/
String pluginType();
...
}
用作标注插件的注释,并使用以下函数读取它们。
public static List<PluginInfo> getAllPlugins() {
for (final IndexItem<PluginInfo, TIPLPluginFactory> item : Index.load(
PluginInfo.class, TIPLPluginFactory.class)) {
final PluginInfo bName = item.annotation();
...
java插件在类
中有这个@TIPLPluginManager.PluginInfo(pluginType = "DistGrow",
desc="Full memory distance growing",
sliceBased=false)
final public static TIPLPluginManager.TIPLPluginFactory myFactory = new TIPLPluginManager.TIPLPluginFactory() {
@Override
public ITIPLPlugin get() {
return new DistGrow();
}
};
scala插件具有几乎相同的代码
@TIPLPluginManager.PluginInfo(pluginType = "GrayAnalysis",
desc="Spark-based gray value analysis",
sliceBased=false,sparkBased=true)
val myFactory: TIPLPluginManager.TIPLPluginFactory = new TIPLPluginManager.TIPLPluginFactory() {
override def get():ITIPLPlugin = {
return new ShapeAnalysis;
}
};
知道为什么这不起作用或者如何修改它以使其正常工作?一个简单的黑客就是让一个新的java类具有所有这些注释来制作scala但是这看起来不是很优雅