是否可以在Service类中声明一个final int字段,并使用onCreate()方法从查询到数据库得到的整数来初始化它?
public class MyService extends Service
{
private int id;
@Override
public void onCreate()
{
... calculate id value ...
id = <id value derived>;
}
}
我在Eclipse中的字段赋值行上的onCreate()方法中遇到了这个错误:
"The final field cannot be id cannot be assigned"
并且在类定义行上出现此错误:
"The blank final field id may not have been inizialized"
就我而言,这是定义一个只想初始化一次的字段的正确方法。谁能帮我?感谢
答案 0 :(得分:8)
必须在结尾处明确指定空白的最终实例变量 声明它的类的每个构造函数;否则会发生编译时错误。
onCreate()是在创建活动时从OS调用的特定方法,因此它在Activity的构造函数之后调用。您必须在调用onCreate()之前指定最终字段。
答案 1 :(得分:5)
不,你不能在onCreate中初始化它。在声明
上初始化它private final int id = 5;
或在类构造函数
中public class MyClass extends Activity {
private final int id;
public MyClass() {
id = 10;
}
}
答案 2 :(得分:0)
只需在此类活动之上定义您的ID:public final static int id = 5
。应该这样做。