删除Bluej中的对象

时间:2016-02-25 14:30:59

标签: java bluej

我根据电影The Ghost and The Darkness制作了一个项目,我通过GUI创建了一个人类类的对象和两个狮子类对象。

public class Lion{
     private String Name;

     public Lion(String Name){
        this.Name=Name;
     }
}    

这是人类,

 public class Human{
       private String name;

       public Human(String name){
           name="Hunter";
       }
}

现在,我想创建一个可以杀死/删除Lion对象的搜索对象。

1 个答案:

答案 0 :(得分:0)

我认为你想创造类似于游戏的东西,在游戏中角色可以被杀死(或从游戏中删除)。

至少有两种方法可以实现:

//You can plan the hierarchy for your classes first..
//This is optional, but to make it interesting, we create a super class

abstract class LivingThings
{
    private Boolean isAlive;
    private String name;

    public LivingThings(String name){
        this.name = name;
        isAlive = true;    //When an object is created, set it to alive
    }
    public void setAlive(Boolean flag){
        this.isAlive = flag;
    }
}

<强> 1。将其标记为已死

现在,Human和Lion可以成为LivingThings的子类,所有子类都将拥有一个称为isAlive的属性:

class Lion extends LivingThings{
    //Your other properties for Lion
}

class Human extends LivingThings{
    //Your other properties for Human

    public void kill(LivingThings target){
        target.setAlive(false);    //Kill an object (but object still exist in game)
    }
}

如果您正在制作游戏,通常不需要立即从游戏中删除该对象。但相反,我们标记为“死”。

<强> 2。尊重对象(不推荐)

如果你真的想删除它。你可以这样做:

public void kill(LivingThings target){
    target = null;    //Remove object (Wait for Garbage Collector to collect it) 
}

但是,将其设置为null可能会导致不良后果,因为程序的其他部分可能仍在引用该对象,因此会为您提供NullPointerException