Cor*_*lla 3 android abstract-class final
目前,我创建了一个这样的抽象类:
public abstract class MyClass {
public final static String TAG;
...
}
Run Code Online (Sandbox Code Playgroud)
但它给我一个错误,即不初始化最终变量.然后我尝试从构造函数初始化它,但它也没有工作(给出相同的错误加上另一个尝试将值设置为最终变量),尽管许多stackoverflow帖子说真的有用......
public abstract class MyClass {
public final static String TAG;
public MyClass(String u){
this.TAG = u;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎只有在声明变量时才必须分配最终变量.它是否正确?我怎样才能做到这一点?
你不能因为static关键字.static final确保变量的值不会在应用程序的整个生命周期中发生变化.当您尝试在构造函数中初始化它时,您将其值绑定到特定实例,从而击败常量的概念.由于您希望每个子类具有不同的值,因此您可以更改代码,例如:
public abstract class MyClass {
protected final String mTag;
public MyClass(String u){
mTag = u;
}
}
Run Code Online (Sandbox Code Playgroud)
这种方式mTag只能从MyClass子类访问 .或者你也可以constant在每个子类中声明它,省略构造函数的初始化.例如
public final static String TAG = YourClassName.class.getSimpleName();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |