我正在寻找一种方法来检查Java,某些对象是一些Groovy类的实例。Groovy Java交叉编译instanceof
对于每个Groovy类,由于编译过程(包括Java类存根生成),看起来不可能。所以,使用Groovy类的instanceof将返回false。
在手表窗口我可以测试它。
ModelNode.class = {[email protected]}"class ModelNode"
component.getClass() = {[email protected]}"class ModelNode"
component instanceof ModelNode = false
显然,有两个不同的类。 Java看到生成的一个。所以,我正在寻找一种很好的方法来检查一些针对Groovy类的对象。
我试过反射和getSuperclass()方法,它看起来像有两个完全不同的类,派生自同一个超类。
component.getClass().getSuperclass() = {[email protected]}"class javax.swing.tree.DefaultMutableTreeNode"
ModelNode.class.getSuperclass() = {[email protected]}"class javax.swing.tree.DefaultMutableTreeNode"
而且我不能的instanceof后投什么,由于类似的原因。所以,我一定是做错了错了。
有没有办法在Java中使用Groovy对象。没有Java代码方法所需的Java端接口。
P.S.最后一句是关于这样的解决方案
在Java
interface A {
foo();
}
assert(object instanceof B) // false;
((A)object).foo(); // fail
assert(object instanceof A) // true;
((A)object).foo(); // nice
在Groovy
class B extends SMTH implements A { ... }
退一步讲,您使用蚀? – Will
@是的,我正在使用IntelliJ IDEA CE 12.1.4,使用groovy 2.1.3和1.6 JDK。的MacBook。 – Seagull