У меня есть класс, как этотява статический метод
public class StockCodes
{
public static boolean loaded = false;
public static long lastUpdate = 0;
private static long freq = 1000 * 60 * 60 * 24;
public static HashMap<String, Stock> stockMap = new HashMap<String, Stock>();
public static ArrayList<Stock> getCodes()
{
long now = System.currentTimeMillis();
if ((StockCodes.loaded) && ((now - StockCodes.lastUpdate) < freq))
{
System.out.println(StockCodes.loaded);
return stockList;
}
else
{
HttpFetcher fetcher = new HttpFetcher();
....
log.info("Load " + stockList.size() + " Stocks");
StockCodes.loaded = true;
StockCodes.lastUpdate = now;
return stockList;
}
}
public static void main(String[] args)
{
StockCodes.getCodes();
}
}
При запуске приложения Java, он выдает «истина». Сообщая нам, что фондовые индексы загружены. Но когда я отлаживаю приложение Java, оно переходит в другое. Я не понимаю, почему он работает таким образом, особенно почему он выводит «true» при первом запуске приложения. Может кто-то еще мне помочь, спасибо ~
Что в "' .... '"? Возможно, вызов 'StockCodes.getCodes()'? –
В обоих случаях - что вы делаете? Из того, что вы нам показали, эта программа никогда не должна выводить значение true, но похоже, что вы отлаживаете, пропустив основной метод и когда вы запускаете Java-приложение, что-то еще установило StockCodes = true перед выходом. – dfb
Я не вижу никакого преимущества использования переменной boolean. Вместо этого вы можете использовать метод init (резонанс - это когда вы устанавливаете логическую переменную в истинное состояние, она остается правдой навсегда) –