簡體   English   中英

在matlab classdef中導入java類

[英]importing java classes in matlab classdef

我有一個使用classdef定義的matlab類。

我正在為一些java東西創建一個包裝器,需要導入幾個類。

我無法弄清楚導入這些類的位置,到目前為止我可以根據需要在每個方法中導入它們......這很痛苦。

有任何想法嗎?

是的,您需要將它們導入到每個方法中,這很痛苦。

一個小測試確認您需要在每個方法中重復導入列表:

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

這兩個答案都不正確(不再?)。 您可以將導入的類分配給類對象的屬性,並在不重新導入的情況下訪問它們。 以下代碼工作正常(在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM