我正在尋找一種方法來檢查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