【问题标题】:Get application variables from within TimerTask从 TimerTask 中获取应用程序变量
【发布时间】:2013-06-07 23:21:19
【问题描述】:

我正在尝试使用 Java TimerTask 每 1 分钟执行一次功能。

我有以下代码:

Public Class SomeClass{
String somevar = 'some text';
Timer timer = new Timer ();
TimerTask hourlyTask = new TimerTask () {
@Override
public void run () {
   I need to access the variable somevar here.
}
};
}

取自这里:How to call function every hour? Also, how can I loop this?

问题是在函数 run() 中,我需要访问包含此 TimerTask 的应用程序中的一些变量。

我尝试了 'this' 关键字,但显然 TimerTask 是它自己的对象,因此 'this' 仅指 TimerTask 中的项目。

【问题讨论】:

  • “应用程序变量”是什么意思。请提供一个小的完整示例来说明您正在尝试做什么。 “完整”是指您的示例还应包括示例变量,显示哪些类和/或方法包含它们,您需要在 run() 方法中使用这些变量。

标签: java


【解决方案1】:

您可以使用OuterClass.this.outerVariable,但通常这不是必需的,除非两个类(外部类和内部类)具有相同名称的变量。否则,内部类可以完全访问外部类字段。

如果您展示更多内容,包括您的尝试以及它们导致的任何编译错误,我们将能够更好地为您提供帮助。

【讨论】:

  • 好吧。 “否则,外部类字段是完全可访问的”声明让我朝着正确的方向前进。我试图使用“this”关键字,但发现如果我不使用它,它就可以工作。谢谢。
  • 我有同样的问题,我还是有点困惑。
  • @toast,然后你会想问一个新问题,并在你的问题中告诉我们你的问题的细节,你的困惑并显示你的相关代码。
  • @HovercraftFullOfEels 我看到a thread on Bukkit(这是我正在使用的 API)基本上排除了使用标准 java.util 计时器和其他标准 java 方法的可能性。相反,我必须使用 Bukkit 替代方案。在问另一个问题之前,我会尝试这样做,但是谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-05-23
  • 2018-11-10
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2018-06-01
  • 2015-01-31
  • 1970-01-01
相关资源
最近更新 更多