从python检查java对象类型

时间:2013-08-23 04:54:02

标签: java python jython

我在一些包下有2个java类Foo和FooBar。这两个类都实现了接口FooIFC。我想从python(Jython)脚本中找到接口的实例是否为Foo或FooBar类型。

我在IFC的一个基类(实现者)中有一个静态getinstance()

from package import FooIFC
from package import Foo

if FooIFC.getinstance() instanceof Foo:
    print "Foo"
else:
     print "FooBar"

我也尝试了isintance(FooIFC.getinstance(),Foo)。这样会找不到错误名称。

instanceof期待结肠错误。

如何从python脚本中找到对象类型?

由于

2 个答案:

答案 0 :(得分:1)

python中没有instanceof运算符,而是isinstance(即isin s tance)内置函数。因此:

from package import FooIFC
from package import Foo

if isinstance(FooIFC.getinstance(), Foo):
    print "Foo"
else:
    print "FooBar"

答案 1 :(得分:0)

Jython中,您也可以尝试。

from package import FooIFC
from package import Foo

if FooIFC.getClass().getSimpleName() == 'Foo':
    print "Foo"
else:
    print "FooBar"

示例代码:

import java.util.ArrayList as ArrayList

arr = ArrayList()
arr.add(10)
arr.add(20)
print arr
print "Name:", arr.getClass().getName()
print "Simple Name:", arr.getClass().getSimpleName()

if arr.getClass().getName() == 'java.util.ArrayList':
    print "This is an ArrayList"

if arr.getClass().getSimpleName() == 'ArrayList':
    print "This is an ArrayList"

输出:

> jython check_type.py
[10, 20]
Name: java.util.ArrayList
Simple Name: ArrayList
This is an ArrayList
This is an ArrayList