2

next()同じクラスにメソッドがある場合、名前が付けられた Java メソッドにアクセスするにはどうすればよいgetNext()ですか?

JPype には、プロパティ名だけを使用して Bean プロパティ (パラメーターなしの get-Methods) にアクセスできる機能があります。したがって、メソッドを持つクラスがある場合、getNext()Python 内からその Bean プロパティにアクセスできますinstance.next。これは、99.9% のケースで優れています。しかし、どうすればアクセスできますinstance.next()か? 呼び出すinstance.next()と、Bean プロパティの戻り値の型が呼び出し可能ではないという例外が発生します。

4

2 に答える 2

1

おそらく、基になる Java クラスでリフレクションを使用する必要があります。

# iterate through all methods
for method in instance.__javaclass__.getMethods():
    # find the method matching the correct signature
    if method.name == u'next' and len(method.parameterTypes) == 0:
        # create a function that invokes the method on the given object
        # without additional arguments
        next_instance = lambda o: method.invoke(o, [])
        break
else:
    raise Exception('method was not found')

nxt = next_instance(instance)
于 2013-10-01T20:12:06.363 に答える
0

originell の jpype フォークで修正されてい ます https://github.com/originell/jpype/commit/0e6067f2eec78f6c697b3714f467142fa9b58243

于 2014-02-12T14:07:37.613 に答える