Android,创建引用类数组

时间:2013-02-17 17:46:35

标签: java android arrays nullpointerexception

我慢慢变得疯狂......试图定义一个非常简单的类数组来保存其他引用类的实例。 但是我一直都在得到空指针错误。 我错了什么? 对于任何帮助,我非常感谢!!

//-------------------------
// main activity
//-------------------------
package bangkokguy.android.fromscratch;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Palya kaki = new Palya();
}

@Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
  }
}
//-------------------------
// class Palya
//-------------------------
package bangkokguy.android.fromscratch;

public class Palya {
  public Kocka sok_kocka [];
  public Palya() {
    sok_kocka = new Kocka[10];
    <b>sok_kocka [1].letter = ' '; /*!!! null pointer here */</b>
  }
}
//-------------------------
// class Kocka
//-------------------------
package bangkokguy.android.fromscratch;

public class Kocka /*implements _NewLetter, _IsFree*/ {
  public char letter;
  static final char c_empty = ' ';
  public Kocka () {letter = c_empty;}
  public Kocka (char letterke) {letter = letterke;}
  public void _NewLetter (char letterke) {letter = letterke;}
  public boolean _IsFree () {return letter == c_empty;}
}

2 个答案:

答案 0 :(得分:2)

制作数组是不够的,你还必须给每个索引一些东西。否则,数组中的每个索引将保留对象数组的null。 例如,在创建数组后将某些内容分配给索引0:

sok_kocka = new Kocka[10]; 
sok_kocka [0] = new Kocka();

如果要避免使用NPE,则必须对阵列中的所有索引执行此操作。另请注意0上的数组索引 start 1

答案 1 :(得分:0)

sok_kocka = new Kocka[10];创建一个大小为10的空数组,可以容纳“Kocka”类型的对象。但这并不意味着数组中包含任何项目 - 您必须手动分配这些项目。