Sal*_*med 2 java constructor inner-classes
我们不能在匿名类中声明构造函数.但是如果我需要使用局部变量的值初始化匿名类的对象的状态,我该怎么做?
你可以这样做:
final int localVar = 5;
new Runnable() {
int innerVar = localVar; // <--- initialized here
public void run() {
System.out.println(innerVar);
}
}.run();
Run Code Online (Sandbox Code Playgroud)
如果localVar是变异的(不是最终的)你可以使用它来解决它
...
final int tmp = localVar;
new Runnable() {
int innerVar = tmp;
...
...
Run Code Online (Sandbox Code Playgroud)
另请注意,如果需要调用方法或进行其他初始化,您可以使用实例初始值设定项,而这通常是在构造函数中执行的操作:
final int localVar = 5;
new Runnable() {
int innerVar;
// Initialization block executed upon construction of this class
{
System.out.println("Initializing an anonymous Runnable");
innerVar = localVar;
}
public void run() {
System.out.println(innerVar);
}
}.run();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |