2013-05-06 3 views
1

У меня есть класс matlab, определенный с помощью classdef.Импорт классов Java в matlab classdef

Я создаю оболочку для некоторых java-материалов и вам нужно импортировать несколько классов.

Я не могу понять, где импортировать эти классы, пока я могу импортировать их по мере необходимости в каждом методе ... что является болезненным.

любые идеи?

ответ

2

Да, вы должны импортировать их в каждый метод, который является болезненным.

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 
0

Ответы не верны (больше?). Вы можете назначить импортированные классы свойству 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 
+0

Вы ошибаетесь. То, что вы назначаете этому свойству, - это объект ** экземпляр ** (созданный с помощью конструктора с пустым аргументом). Затем вы просто ссылаетесь на этот экземпляр объекта, который не имеет ничего общего с импортом класса. Если вы хотите создать другой экземпляр 'Robot()' в 'moveClick', вам придется снова импортировать класс. –

+0

Вы правы, я неправильно понял вопрос. Спасибо за разъяснения. –

Смежные вопросы