我有一個使用classdef定義的matlab類。在matlab中導入java類classdef
我創建了一些java東西的包裝,並需要導入幾個類。
我不知道在哪裏導入這些類,到目前爲止,我可以根據需要在每種方法中導入它們......這很痛苦。
有什麼想法?
我有一個使用classdef定義的matlab類。在matlab中導入java類classdef
我創建了一些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
兩個答案都不正確(不再?)。您可以將導入的類分配給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
你錯了。分配給屬性的是對象**實例**(通過空參數構造函數創建)。然後你只是簡單地引用這個對象實例,它與類的導入無關。如果你想在'moveClick'中創建另一個Robot()'實例,你必須重新導入這個類。 – 2016-06-29 22:02:48
你說得對,我誤解了這個問題。感謝澄清。 – 2016-06-30 16:08:51