我正在使用“Predic8”的名为“SOA-Model”的库。代码可以在这里找到。
该库的一些代码是用 Groovy 编写的,但我正在使用 Java 应用程序中的这个库。我正在尝试编写一个扩展“ResourceResolver”的类“ExternalResolver”。它与此处的示例代码类似。我相信可以在这里找到 ResourceResolver 的源代码。
但是,我是用Java编写的,如下所示:
import com.predic8.schema.Import;
import com.predic8.xml.util.ResourceResolver;
public class ExternalWSDLResolver extends ResourceResolver {
public Object resolve(Object input, String baseDir){
//some code here to do the customised resolving
}
}
现在,如果在 Eclipse 中编译,以上所有内容都可以正常工作。
然而,当我尝试在 IntellijIDEA 上编译时,它迫使我实现更多的方法。基本上实现的方法:
- implements groovy.lang.GroovyObject.invokeMethod(String s, Object o)
- implements groovy.lang.GroovyObject.getProperty(String s)
- implements groovy.lang.GroovyObject.setProperty(String s, Object o)
- implements groovy.lang.GroovyObject.getMetaClass()
- implements groovy.lang.GroovyObject.setMetaClass(MetaClass metaClass)
对于大多数人来说,我可以简单地返回“null”。但是,如果我为 getMetaClass 执行此操作,我的代码将不起作用,并返回异常。
因此,我需要知道:
- 有没有办法可以关闭 Intellij 上的这些警告?... 或者
- 我可以放入 getMetaClass 以使其正常工作?即一种默认值。
编辑:
正如评论中建议的反编译ResourceResolver.class
,因此,这里是例如 getMetaClass 的结果。
另外,作为参考,我在这里粘贴了整个输出:http: //pastie.org/7980007
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #25; //Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
22: areturn