我一直在使用classdef定义的MATLAB类。
我创建了一些Java的东西的包装,需要导入几类。
我想不出哪里导入这些类,到目前为止,我可以导入它们需要在每个方法......这是痛苦的。
有任何想法吗?
我一直在使用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
这两个答案都是不正确的(了?)。 您可以将导入的类的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