#java
#java
Вопрос:
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// my code is here card.getJLabel().setVisible(false);
}
}, 3000 // < my parameter);
Как я могу создать короткую функцию этого, я использую ее в разных функциях, поэтому было бы чисто, если бы я мог создать короткую версию этого.
Еще один, я довольно новичок в Java, так какой материал мне следует прочитать, чтобы узнать больше об этой конкретной теме. Спасибо, чувак 🙂
Ответ №1:
Предполагается, что то, что может измениться от одного вызова к другому, card
должно быть скрыто и delay
перед тем, как оно будет скрыто :
public void hideCard(MyCard card, long delay){
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
card.getJLabel().setVisible(false);
}
}, delay);
}
Вот хорошее начало для рефакторинга и рефакторинга с Eclipse.
Ответ №2:
Просто поместите этот фрагмент кода в отдельный метод и вызывайте метод каждый раз, когда вы хотите запустить фрагмент кода:
public void scheduleHideCard() {
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// my code is here card.getJLabel().setVisible(false);
}
}, 3000 // < my parameter);
}
…и вызвать метод, выполнив scheduleHideCard()
.
Если вы используете Eclipse, вы даже можете выбрать фрагмент кода и выполнить Source -> Refactor -> Extract Method, и он позаботится об извлечении соответствующих параметров для вас.
В качестве дополнительного примечания: если вы используете несколько классов из java.util
пакета, вам может потребоваться импортировать эти классы в начало файла:
import java.util.*;
Ответ №3:
Если я правильно понимаю, вы хотите извлечь этот код в отдельный метод, подобный этому?
void scheduleSomeActivity() {
new java.util.Timer().schedule(...);
}
или, возможно, превратить, например, задержку в параметр:
void scheduleSomeActivityWithDelay(long delay) {
new java.util.Timer().schedule(..., delay);
}