为什么我得到一个对象数组的空指针异常? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我得到一个对象数组的空指针异常? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我想创建一个Card类型的ArrayList
我的Card类将有2个类型为Suit的实例变量,名为suit,类型为String,称为rank。 Suit类型是它自己的子类,有2个类型为String的实例变量,名为suitTitle,类型为Boolean,名为selected。
我的卡片类看起来像这样
public class Card {
public Suit suit;
public String rank;
使用构造函数和所有明显的getter和setter
我的西装类看起来像这样
public class Suit {
public String suitTitle;
public Boolean selected;
使用构造函数和所有明显的getter和setter
创建卡片时首先我需要一个类似于此的套装类型
Suit[] suit = new Suit[4];
suit[0].suitTitle = "Spades";
suit[1].suitTitle = "Hearts";
suit[2].suitTitle = "Clubs";
suit[3].suitTitle = "Diamonds";
但是当试图输入值时,我得到一个nullpointer异常
答案
当你这样做:
Suit[] suit = new Suit[4];
...您正在创建一个足以容纳4个Suit
对象的数组,但数组中的每个对象都为null。
因此,您需要这样做:
Suit[] suit = new Suit[4];
// put actual Suit objects in the array
suit[0] = new Suit();
suit[1] = new Suit();
suit[2] = new Suit();
suit[3] = new Suit();
suit[0].suitTitle = "Spades";
suit[1].suitTitle = "Hearts";
suit[2].suitTitle = "Clubs";
suit[3].suitTitle = "Diamonds";
另一答案
您正在初始化套装数组但是对于数组套装对象的每个位置都为null,因此您将获得NullPointerException。请检查一下:
public class Card {
public Suit[] suit;
public String rank;
}
public class Suit {
public String suitTitle;
public Boolean selected;
}
public class TestCard {
public static void main(String[] args) {
Suit[] suitList = new Suit[4];
Suit suit1 = new Suit();
suit1.suitTitle = "Spades";
suitList[0] = suit1;
Suit suit2 = new Suit();
suit2.suitTitle = "Hearts";
suitList[1] = suit2;
Suit suit3 = new Suit();
suit3.suitTitle = "Clubs";
suitList[2] = suit3;
Suit suit4 = new Suit();
suit4.suitTitle = "Diamonds";
suitList[3] = suit4;
Card card = new Card();
card.rank = "xyz";
card.suit = suitList;
}
}
另一答案
我建议您将套装存储为卡类中的数字1-4,并且具有返回String的getSuit()函数,而不是具有套装类。如果您以更有价值的西装是更大的数字来订购它们,您将能够轻松地比较西装,因为它们已经是整数。
String getSuit(){
if(suit == 1){
return "the suit";
}
...
}
以上是关于为什么我得到一个对象数组的空指针异常? [重复]的主要内容,如果未能解决你的问题,请参考以下文章