ではなくでは、Java ArrayListに入れた際にjythonがJavaオブジェクトをPython型に自動的に変換することができますか? JythonのコンソールからコピーJavaからJythonに渡すときにオブジェクトのJava型を保持する
例:
>>> b = java.lang.Boolean("True");
>>> type(b)
<type 'javainstance'>
>>> isinstance(b, java.lang.Boolean);
1
これまでのところ、すべてが正常であるが、私はArrayListの
>>> l = java.util.ArrayList();
>>> l.add(b)
1
>>> type(l.get(0))
<type 'int'>
にオブジェクトを置く場合、オブジェクトはPythonのように変換されますブール値(つまりint)と...
>>> isinstance(l.get(0), java.lang.Boolean)
0
これは、これが以前はajだったことがもう分かりませんava.lang.Boolean。私は本当に達成したいと思い
明確化
は、PythonにJavaからオブジェクトを渡すときのPythonの型へのJava-型から暗黙の変換を取り除くことです。わかりやすくするために別の例を挙げます。
A Pythonモジュール:ここで
import java.util.ArrayList;
import org.python.core.PyList;
import org.testng.annotations.*;
import static org.testng.AssertJUnit.*;
public class Test1 {
IPythonModule m;
@BeforeClass
public void setUp() {
JythonFactory jf = JythonFactory.getInstance();
m = (IPythonModule) jf.getJythonObject(
"IPythonModule",
"/Users/sg/workspace/JythonTests/src/PythonModule.py");
}
@Test
public void testFirst() {
m.method(new Boolean("true"));
}
}
は私が原因で暗黙の型変換の出力 'ブール' を参照しますが、私はこのモジュールを使用しています
import java
import IPythonModule
class PythonModule(IPythonModule):
def method(self, data):
print type(data);
とJavaクラス本当に好きなのは 'javainstance'や 'java.lang.Boolean'です。このコードを実行したい場合は、hereというJythonFactoryクラスも必要です。
はい私はpython boolタイプのサポートを持たない2.2.1の最新の安定版を使用しています...今すぐ2.5bをダウンロードしています... –
>>> b = java.lang.Boolean( "true "); >>> l = java.util.ArrayList(); >>> ladd(b) True >>> type(l。(0)) >>>でisinstance(l.get(0)、java.lang.Booleanの) 偽 私の知る限り見ることができるように、変換がまだ行われ、それがこの変換であるIドンを取得欲しい。 –
ここで2つの潜在的な変換が実際に起こっています.1つはアレイに入り、もう1つは出てきます。 ArrayListの中には、java.lang.Booleanがあります。これは小文字の 't'で表示されるため、表示されます。 –