2015-12-15 3 views
0

У меня есть пакет, который имеет 2 класса Package1ClassA и Package1ClassB. У меня есть другой пакет, который имеет класс Package2ClassC.Как общаться между различными пакетами в java?

Package1ClassA является прототипом bean-компонента, расширяет runnable, имеет булевую переменную stop и метод run. Этот метод запуска вызывает метод в одноточечном классе Package2ClassC.

Package1ClassB начинает тему Package1ClassA в одном запросе. И другой поток от Package1ClassB изменяет значение stop.

Мне нужно передать это изменение состояния stop в Package2ClassC.

Я не могу создать объект, поэтому геттер для остановки не будет работать. Я попытался сделать stop изменчивым, но это не сработало, я предполагаю, что проходил остановку в качестве параметра функции от Package1ClassA до Package2ClassC.

Как мне решить эту проблему?

+0

Почему бы вам не создать объект? –

+1

http://stackoverflow.com/questions/15433855/how-to-create-change-listener-for-variable –

+0

@MathewsMathai Да, я думаю, что объект будет делать. Как глупо обо мне не думать об этом. Благодарю. – rd22

ответ

1

Возможно, вы использовали функцию для изменения значения булевой переменной stop. Создайте объект Package2ClassC в той же функции/методе. Package2ClassC также должен иметь переменную экземпляра типа boolean (eg.start). Назначьте измененное или новое значение переменной «stop» переменной «start» в Package2ClassC.

Например:

function() 
{ 
    stop=true; //changed value 
    Package2ClassC ob=new Package2ClassC(); 
    ob.start=stop; 
    } 

Если вы не хотите, чтобы создать object.Make переменную 'старт' в Package2ClassC static.Then изменения будут применяться в качестве:

function() 
    { 
     stop=true; //changed value 
     /* Package2ClassC ob=new Package2ClassC(); not required for static variables*/ 
      Package2ClassC.start=stop; 
    { 

Если переменная «start» статична, вам не нужно создавать объект для ее использования. Я имею в виду, что вы не можете использовать объект для его использования.

Лучшим решением было бы сделать переменную static.Это связано с тем, что значения статических переменных являются общими для всех объектов в классе. Существует всего одна копия.

Если вы переходите к первому варианту, который создает объект (с использованием нестатической переменной «start»), вам придется использовать тот же объект для вызова других методов/функций в Package2ClassC, чтобы не отставать от значение «start», которое было изменено. Это связано с тем, что если переменная не является статической, каждый созданный новый объект получит начальное значение для этой конкретной переменной (значение, которое вы присвоили ей во время объявления).

Таким образом, статическое качество намного лучше.

+0

Это помогло. Благодаря!. Наверное, я мог бы передать объект методу или, как вы упомянули, использовать шаблон наблюдателя. – rd22

+0

Great.Glad, чтобы знать, что это помогло. –

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