使用Java将对象添加到另一个对象

时间:2012-12-09 13:28:51

标签: java oop object

我最近一直在给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;      

}

如何使用此方法创建实例?

2 个答案:

答案 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,它将显示异常发生的确切行号。