Android - onCreate()方法中的最终int字段

时间:2011-03-28 18:29:59

标签: java android final

是否可以在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"

就我而言,这是定义一个只想初始化一次的字段的正确方法。谁能帮我?感谢

3 个答案:

答案 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。应该这样做。