【问题标题】:deleting an object in Bluej删除 Bluej 中的对象
【发布时间】:2016-02-25 14:30:59
【问题描述】:

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

public class Lion{
     private String Name;

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

这是 Human 类,

 public class Human{
       private String name;

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

现在,我想制作一个可以杀死/删除 Lion 对象的狩猎对象。

【问题讨论】:

  • 您尚未在该代码中创建任何对象。您只创建了一些类。没有要删除的对象。
  • 另外,你的问题是什么?到目前为止,您只是在向我们讲述您想做的事情的故事。
  • 我知道上面已经提到了。
  • 我的故事是我想知道的问题?
  • 如果你已经知道了,那你为什么还要谈论删除对象呢?您不能删除不存在的对象。

标签: java bluej


【解决方案1】:

我假设您想要创建类似于游戏的东西,其中角色可以被杀死(或从游戏中删除)。

至少有两种方法可以做到这一点:

//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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多