0

我有两个Java 类FooFooBar一些包。这两个类都实现了接口 FooIFC。我想查找实例是类型Foo还是FooBar来自Jython脚本。

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

from package import FooIFC
from package import Foo

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

我也试过isintance(FooIFC.getinstance(), Foo)了。这给出了一个未找到的错误名称。

instanceof给出预期的冒号错误。

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

4

2 回答 2

1

python中没有instanceof运算符,而是有isinstance也就是说)内置函数。因此:

from package import FooIFC
from package import Foo

if isinstance(FooIFC.getinstance(), Foo):
    print "Foo"
else:
    print "FooBar"
于 2013-08-23T07:03:55.373 回答
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
于 2020-01-09T19:55:48.990 回答