1

我是新来的。我正在尝试做一个消息列表,其中包含消息 1、消息 2 和消息 3 的内容。但下面的代码显示错误消息。

static final String[] ITEMS = new String[] { "message 1", "message 2", "message 3" };

错误信息:

Illegal modifier for parameter ITEMS; only final is permitted

但是在“另一个项目”中,我正在做一个水果清单,使用下面的代码。

static final String[] FRUITS = new String[] { "Apple", "Banana", "Coconut" };

它工作得很好。两个代码看起来完全一样,所以我不知道问题出在哪里。

以下是消息列表的完整代码。

package net.eg.itemlist;


import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.app.ListActivity;

public class Main extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    static final String[] ITEMS = new String[] { "message 1", "message 2", "message 3" };

    ArrayAdapter<String> adapter =
        new ArrayAdapter<String>(this, R.layout.main, R.id.textview_id, ITEMS);
    setListAdapter(adapter);            


}
}
4

2 回答 2

4

您不能static在方法中使用。将声明移至类级别或删除static.

static意味着它是类本身的值,而不是类的实例。因此,如果您创建了 100 个类的实例,则如果您声明它static,则该变量只有一个共享实例,但如果您不声明它,则将有 100 个实例static

在 Java 中,这种变量只允许在类级别使用。

附带说明:在 C++(不确定 C)中,您可以在具有相似语义的方法/函数中使用它:每次调用函数/方法时,该变量的内存都是相同的,并且初始化只会是在第一次通话时完成。但是您不能从函数/方法外部寻址内存,因此变量将是“函数/方法私有”。

于 2012-08-05T22:34:16.757 回答
0

static从ITEMS 字符串数组中删除声明。

或者,如果 ITEMS 数组被声明为类属性,则可以保留它。

于 2012-08-05T22:44:49.667 回答