0

私は最近Javaでテトリスのようなゲームを作っています。インターフェイスIBlocksがあります。これはConsBlockEmptyBlockConsBlock最初​​にブロックがありIBlock、最後にリストがあるリストです。何らかの理由で、先生が望んでいた方法です) 。

私はgetfirst()インターフェースに機能を持っています:

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

(ARestingはゲームの1ブロックです)

次に、ConsBlockクラスでは、次のようになります。

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

しかし、EmptyBlockクラスでは、存在しないと言っているようなものを返したいと思います。をnull返そうとしましたが、インターフェイスの関数が。を返すように指示しているため、nullポインタ例外が発生しました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();
    }
}

IBlocksあなたとクラスはではなくConsBlockを返す必要があることに注意してくださいIRestingResting

そのwikiリンクを必ず読んでください!

于 2012-11-09T02:33:18.853 に答える
0

私はこれでオフベースになる可能性がありますが、メソッドヘッダーでは、Resting が返されるように求めていると思います。ブールオブジェクトを作成してそれを返す方法はありますか? 空のような名前を付けて、空の場合はtrueを返し、空でない場合はfalseを返しますか? もう 1 つの提案は、次のようにゼロに設定する基準を満たしている場合、Resting を手動で 0 に設定することです。}。

于 2012-11-09T02:37:40.107 に答える