导入Java类在MATLAB classdef(importing java classes in

2019-10-18 03:06发布

我一直在使用classdef定义的MATLAB类。

我创建了一些Java的东西的包装,需要导入几类。

我想不出哪里导入这些类,到目前为止,我可以导入它们需要在每个方法......这是痛苦的。

有任何想法吗?

Answer 1:

是的,你需要将它们导入到每一个方法,这是痛苦的。



Answer 2:

一个小的测试证实,你需要重复每一个方法的导入列表:

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


Answer 3:

这两个答案都是不正确的(了?)。 您可以将导入的类的classobject的属性和访问它们无需重新导入。 下面的代码工作得很好(在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


文章来源: importing java classes in matlab classdef