返回界面中等于什么的东西

时间:2012-11-09 02:30:08

标签: java interface

我最近在Java中制作了类似俄罗斯方块的游戏,我有一个IBlocks接口ConsBlockEmptyBlockConsBlock是一个在开始时有一个块的列表最后有一个IBlock列表,出于某种原因,这就是我老师想要的方式。)

我在界面中有getfirst()功能:

public interface IBlocks{
//returns the first block in a list of blocks
public Resting getfirst();

(A Resting是游戏中的一个区块)

然后,在ConsBlock类中,我有:

public class ConsBlock implements IBlocks{
//returns the first block in a list of blocks
public Resting getfirst(){
    return this.first;

但是在EmptyBlock课程中,我希望它返回类似于没有一个类似的东西。我尝试返回null,但由于接口中的函数告诉它返回Resting这一事实,这给了我一个空指针异常。如果没有用随机数返回Resting,表示空单的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

public interface IResting;
public class Resting implements IResting;

然后

public class EmptyResting implements IResting {
    @Override
    public Object sampleMethod() {
        // return what an empty block ought to return
    }
}

进一步阅读:http://en.wikipedia.org/wiki/Null_Object_pattern

回复你的评论:你仍然需要这样做:

public class EmptyBlock implements IBlocks {
    @Override
    public IResting getFirst() {
        return new EmptyResting();
    }
}

请注意,您的IBlocksConsBlock课程需要返回IResting而不是Resting

请务必阅读该wiki链接!

答案 1 :(得分:0)

我可能会偏离这个但是,我相信你的方法标题是要求让Resting返回。有没有办法可以创建一个布尔对象并返回?也许把它命名为空的,如果它是空的,它返回true,如果它不是空的,它返回false?另一个建议是,如果满足设置为零的条件,则手动将Resting设置为0,例如if(条件满足){returnedResting = 0; }。