Groovy Java交叉编译instanceof
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Groovy Java交叉编译instanceof,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1680字,纯文字阅读大概需要3分钟。
内容图文
我正在寻找一种从Java检查的方法,即某个对象是某个Groovy类的实例.
由于每个Groovy类的编译过程(包括Java类存根的生成),这似乎是不可能的.因此,具有Groovy类的instanceof将返回false.
在“手表”窗口中,我可以对其进行测试.
ModelNode.class = {java.lang.Class@4830}"class ModelNode"
component.getClass() = {java.lang.Class@3073}"class ModelNode"
component instanceof ModelNode = false
显然,有两个不同的类.和Java见生成的.因此,我正在寻找一种针对Groovy类检查对象的好方法.
我尝试了reflexion和getSuperclass()方法,看起来好像有两个绝对不同的类,它们是从同一个超类派生的.
component.getClass().getSuperclass() = {java.lang.Class@871}"class javax.swing.tree.DefaultMutableTreeNode"
ModelNode.class.getSuperclass() = {java.lang.Class@871}"class javax.swing.tree.DefaultMutableTreeNode"
而且,由于类似的原因,我在instanceof之后不能执行任何操作.所以,我一定做错了.
有没有一种方法可以在Java中使用Groovy对象.没有从Java代码方法获得ech所需的Java端接口.
附言最后一句话是关于这种解决方案的.
在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 { ... }
解决方法:
GroovyObject的instanceof?
我创建了以下Java类:
import groovy.lang.GroovyObject;
public class A {
public static void main(String[] args) {
B b = new B();
if (b instanceof GroovyObject) {
System.out.println("b is a groovyobject");
b.yeah();
} else {
throw new RuntimeException("b is not a groovyobject");
}
}
}
以及以下Groovy类:
class B {
def yeah() {
println "hell yeah"
}
}
结果如下:
$javac -cp ~/groovy/embeddable/groovy-all-2.1.3.jar:. A.java
$java -cp ~/groovy/embeddable/groovy-all-2.1.3.jar:. A
b is a groovyobject
hell yeah
内容总结
以上是互联网集市为您收集整理的Groovy Java交叉编译instanceof全部内容,希望文章能够帮你解决Groovy Java交叉编译instanceof所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。