在matlab classdef中导入java类

时间:2013-05-06 21:10:58

标签: java matlab oop import matlab-class

我有一个使用classdef定义的matlab类。

我正在为一些java东西创建一个包装器,需要导入几个类。

我无法弄清楚导入这些类的位置,到目前为止我可以根据需要在每个方法中导入它们......这很痛苦。

任何想法?

3 个答案:

答案 0 :(得分:2)

是的,你需要将它们导入每种方法,这很痛苦。

答案 1 :(得分:1)

小测试确认您需要在每种方法中重复导入列表:

classdef MyClass < handle
    properties
        s
    end
    methods
        function obj = MyClass()
            import java.lang.String
            obj.s = String('str');
        end
        function c = func(obj)
            c = String('b');      %# error: undefined function 'String'
        end
    end
end

答案 2 :(得分:0)

两个答案都不正确(不再?)。您可以将导入的类分配给类对象的属性,并在不重新导入的情况下访问它们。以下代码工作正常(在Matlab 2016a中测试):

classdef moveAndClick < handle
    properties (Access = private)
        mouse;
        leftClick;
    end

    methods
        %% Constructor
        function obj = moveAndClick()
            import java.awt.Robot;
            import java.awt.event.InputEvent;
            obj.mouse = Robot;
            obj.leftClick = InputEvent.BUTTON1_MASK;
        end

        %% Destructor
        function delete (~)
        end

        function moveClick (obj, positionX, positionY)
            % move mouse to requested position
            obj.mouse.mouseMove(positionX, positionY);

            % click on the current position
            obj.mouse.mousePress(obj.leftClick);
            obj.mouse.mouseRelease(obj.leftClick);
        end
    end
end