我最近一直在给C#花费几个月的时间,只是抓住了一些我不确定如何格式化的东西。
我把一个小例子拼凑起来解释我的问题。
我正在尝试将“Creature”类型的对象添加到“Player”类型的对象
中目前是这样的:
//Null items are objects
Player newPlayer = new Player("This", "Is", "Here", 1 , 1, 1, null, null, null);
Creature c = null; //Null items are objects
c = new Creature("Name", "Species", 100, 5.5, 10.5, 1, 100, null, null, null);
newPlayer.addCreature(c);
然而我遇到的问题是java.lang.NullPointException
。
玩家类可以在这里看到:
public Player(String Username, String Password, String Email, int Tokens, int Level, int Experience, Vector<Creature> Creature, Vector<Food> Food, Vector<Item> Item) {
m_username = Username;
m_password = Password;
m_email = Email;
m_tokens = Tokens;
m_level = Level;
m_experience = Experience;
m_creature = Creature;
m_food = Food;
m_item = Item;
}
public void addCreature(Creature c)
{
m_creature.add(c);
}
生物:
public Creature(String Name, String Species, int Health, double Damage, double Regen, int Level, int Exp, Vector<Effect> ActiveEffect, Vector<Attack> Attack, Vector<Specialisation> Specialisation )
{
m_name = Name;
m_species = Species;
m_health = Health;
m_damageMultiplier = Damage;
m_regenRate = Regen;
m_level = Level;
m_experience = Exp;
m_activeEffect = ActiveEffect;
m_attack = Attack;
m_specialisation = Specialisation;
}
如何使用此方法创建实例?
答案 0 :(得分:1)
这是因为对您存储的向量的引用是null
。您正在为构造函数传递null
。
当您传递new vector<Creature>()
时,实际上是在传递对新构造的向量的引用。它还不包含任何生物对象。之前它失败了,因为你试图在设置为null的引用上调用add(..)
函数。
试试这个:
Player newPlayer = new Player("This", "Is", "Here", 1 , 1, 1, new Vector<Creature>(), new Vector<Food>(), new Vector<Item>());
^ new empty vector ^ new empty vector ^ new empty vector
答案 1 :(得分:0)
如果不看addCreature
实施,就不可能说。仔细查看异常的Stackstrace,它将显示异常发生的确切行号。