我慢慢变得疯狂......试图定义一个非常简单的类数组来保存其他引用类的实例。 但是我一直都在得到空指针错误。 我错了什么? 对于任何帮助,我非常感谢!!
//-------------------------
// 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;}
}
答案 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”类型的对象。但这并不意味着数组中包含任何项目 - 您必须手动分配这些项目。