2

Java オブジェクトの配列を返すカスタム Java オブジェクトがありThingます。返された配列を変換して、matlab の Java オブジェクトとして反復するにはどうすればよいですか? 現在、返された配列が Java オブジェクトとして扱われているようには見えません。

//Thing.java
public class Thing {

    public int x,y,z;
    public int[][] board;
    // constructors and setters etc.
}

//ThingReturner.java
public class ThingReturner {
    private LinkedList<Thing> mQueue = new LinkedList<>();

    public void putThing(int x, int y, int z, int[][] board) {
         mQueue.add(new Thing(x, y, z, board));
    }

    public Thing[] getThings() {
        Thing[] things = new Thing[mQueue.size()];
        while (!mQueue.isEmpty()) {
            mQueue.pop();
        }
        return things;
    }
}

私の MATLAB コードには、次のものがあります。

javaaddpath '../bin/';
obj = javaObjectEDT('ThingReturner');
obj.putThing(4,6,0,[[1,1,1],[1,0,0],[1,1,1]]);
obj.putThing(2,2,1,[[1,0,1],[1,1,1],[1,0,1]]);
>> obj.getThings()

ans =

Thing[]:
    []
    []

呼び出しisjava(ans(1))は 0 を返します (isjava(ans)ただし 1 を返します)。では、結果を適切に使用するにはどうすればよいgetThings()ので、などを使用できますans(1).getX()か?

4

1 に答える 1

0

Java コードでばかげた間違いを犯しました。次のようにする必要があります。

public GameOfLifeThing[] getThings() {
    GameOfLifeThing[] things = new GameOfLifeThing[mGoLQueue.size()];
    int i =0;
    while (!mGoLQueue.isEmpty()) {
        things[i++] = mGoLQueue.pop();
    }
    return things;
}
于 2015-03-12T05:45:00.237 に答える