0

我最近一直在用 Java 制作类似俄罗斯方块的游戏,我有一个 IBlocks 接口,它会遍历ConsBlock并且EmptyBlockConsBlock是一个列表,开头有一个块,IBlock结尾有一个列表,出于某种原因,这就是我老师想要的方式) .

getfirst()在界面中有功能:

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

(AResting是游戏中的一个方块)

然后,在 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 的情况下,表示空的最佳方法是什么?

4

2 回答 2

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类需要返回一个IRestingnot aResting

请务必阅读该 wiki 链接!

于 2012-11-09T02:33:18.853 回答
0

我可能对此不以为然,但是我相信您的方法标头要求返回 Resting。有什么方法可以创建一个布尔对象并返回它?也许将其命名为空,如果为空则返回true,如果不为空则返回false?另一个建议是手动将 Resting 设置为 0,如果它满足设置为零的条件,例如 if (condition is met) { returnedResting = 0; }。

于 2012-11-09T02:37:40.107 回答