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

ただし、「ANOTHER PROJECT」では、以下のコードを使用してフルーツリストを作成しています。

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個作成する場合、宣言するとこの変数の共有インスタンスは1つだけにstaticなりますが、宣言しないとインスタンスは100個になりますstatic

Javaでは、この種の変数はクラスレベルでのみ許可されます。

補足として:C ++(Cについては不明)では、同様のセマンティクスを持つメソッド/関数内で使用できます。その変数のメモリは、関数/メソッドを呼び出すたびに同じになり、初期化は次のようになります。最初の呼び出しで行われます。ただし、関数/メソッドの外部からメモリをアドレス指定することはできないため、変数は「function/method-private」になります。

于 2012-08-05T22:34:16.757 に答える
0

staticITEMS文字列配列から宣言を削除します。

または、ITEMS配列がクラスプロパティとして宣言されている場合は、それを保持できます。

于 2012-08-05T22:44:49.667 に答える