Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получание значения переменой 
:(
    Опции темы
Asafj
Дата 11.1.2011, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



Есть метод с помощью которого можно получить значение переменой-true false. Нужно написать функцию, которая вызывает 
другой метод после того как значение переменой стало true. Как это можно сделать?
PM MAIL   Вверх
priam220
Дата 11.1.2011, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Код

public class MyClass{    
    private Boolean checker;

    public static void main(String[] args){
     MyClass mc = new MyClass();
     mc.setChecker(false);
     mc.setChecker(true);
    }
    
    public void setChecker(boolean checker){
     this.checker = checker;
     if (checker)
         modifier();        
    }
    
    private void modifier(){
     System.out.println("if checker is " + checker + " this method is called");
    }
}


Вывод:
if checker is true this method is called


P.S. В java нет функций.

Это сообщение отредактировал(а) priam220 - 11.1.2011, 23:57
PM MAIL   Вверх
Asafj
Дата 12.1.2011, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



Это не совсем, что нужно
Я получаю из другого класса только значение переменной
Это значение сначало false потом становится true
И после того как оно поменялось надо взвать другой метод
т.е
Код

boolean upd;
void b(){
if (upd) {
e();
}


но если b = false метод не вызовится
я пробовал что-то вроде этого но в многопоточной программе я думаю это не вариант:
Код

boolean upd;
void b(){
if (upd) {
e();
}
else {Thread t = new thread();
t.start();
t.sleep(1000);
b();}

 
PM MAIL   Вверх
priam220
Дата 12.1.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Цитата(Asafj @  11.1.2011,  22:59 Найти цитируемый пост)
которая вызывает другой метод после того как значение переменой стало true


Цитата(Asafj @  12.1.2011,  00:08 Найти цитируемый пост)
но если b = false метод не вызовится




не могу связать эти предложения, - так тебе и не надо вызывать modifier() когда false?...

PM MAIL   Вверх
lazycat
Дата 12.1.2011, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 15.7.2007

Репутация: 1
Всего: 1



Думаю, что Вам надо нечто в таком роде:

Код

boolean upd;
boolean lastupd  = null;

  void b(){
    if ((lastupd  == null) || (lastupd  != upd)) {
      e();
      lastupd = upd;
    } 
  
  } 

PM MAIL   Вверх
Asafj
Дата 12.1.2011, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



значение меняется в другой части приложения

Добавлено через 3 минуты и 49 секунд
lazycat,  в этом случае если upd=false метод не вызовется 
PM MAIL   Вверх
priam220
Дата 12.1.2011, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Цитата(Asafj @  12.1.2011,  00:23 Найти цитируемый пост)
значение меняется в другой части приложения

так ты будешь долго писать свой код, особенно в многопоточной программе. Свойство класса может меняться только из одного места, - из самого класса, с помощью метода-сеттера,  и в твоем случае, он должен быть синхронизирован (либо свойство должно быть объявлено как volatile).
Надеюсь, что, наконец, понял условие. 

Это сообщение отредактировал(а) priam220 - 12.1.2011, 01:09
PM MAIL   Вверх
Asafj
Дата 12.1.2011, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



А если доступен тоько get - метод из этого класса?
PM MAIL   Вверх
priam220
Дата 12.1.2011, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Цитата(Asafj @  12.1.2011,  01:15 Найти цитируемый пост)
А если доступен тоько get - метод из этого класса?

если доступен только get, значит:

1. комуто было лень писать  set
2. значение свойства не должно меняться.

Если этот класс скомпилин  (просто добавить нужный метод не можешь) и он не финальный, то ты его можешь расширить, дописав set в потомке
плохое решение. 

Это сообщение отредактировал(а) priam220 - 12.1.2011, 01:42
PM MAIL   Вверх
Temdegon
Дата 12.1.2011, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Объясни, ты это делаешь в своем коде? Или у тебя есть готовый класс, который ты изменить не можешь, и можешь только вызывать геттер?
PM MAIL   Вверх
Asafj
Дата 12.1.2011, 01:29 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



Temdegon, да
PM MAIL   Вверх
priam220
Дата 12.1.2011, 01:49 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Надеюсь, я один не понял, что означало слово "да".  smile 
PM MAIL   Вверх
Temdegon
Дата 12.1.2011, 01:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Краткость конечно с.т., но я лично не понял, что значит "да" в этом контексте. 
PM MAIL   Вверх
Asafj
Дата 12.1.2011, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.8.2010

Репутация: нет
Всего: нет



Ну собственно ответ на твой вопрос. Второй.
PM MAIL   Вверх
lazycat
Дата 12.1.2011, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 15.7.2007

Репутация: 1
Всего: 1



Цитата(Asafj @  12.1.2011,  00:23 Найти цитируемый пост)
lazycat,  в этом случае если upd=false метод не вызовется 


Ошибаетесь, метод будет вызываться при каждом ИЗМЕНЕНИИ значении переменной, а при первом обращении к ней вызовется при любом значении. 
Правда с кодом я протупил (писал его практически засыпая) и написал чушь. Реально он должен выглядеть так:

Код


Boolean lastupd  = null;

  void b(){
    boolean upd = someObject.getUpd();

    if (lastupd  != upd) {
      e();
      lastupd = upd;
    } 
  
  }


PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0962 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.