1

检查职位是否被占用的最佳方法是什么?我认为我不应该使用“this==null”...

class Cell {
    int column;
    int row;
    char letter;

    public Cell(int column, int row, char letter) {
        super();
        this.column = column;
        this.row = row;
        this.letter = letter;
    }

    public boolean isEmpty() {
        if (this==null) return true;
        else return false;
    }
}
4

3 回答 3

2

我将假设char是您的内容,Cell并且您想检查该内容是否是null.

首先,this永远不可能nullthis是当前对象,因此 is 始终存在。

您正在使用char- 因为这是一个原语也不能null。将其更改为对象包装器并检查null

class Cell {

    int column;
    int row;
    Character letter;

    public Cell(int column, int row, Character letter) {
        this.column = column;
        this.row = row;
        this.letter = letter;
    }

    public boolean isEmpty() {
        return letter == null;
    }
}

另一个需要注意的是,超类构造函数总是默认调用,没有理由调用super().

于 2013-04-04T00:55:41.197 回答
0

如果一个对象的实例存在,那么它就不可能存在null!(正如 Code-Guru 的评论所说)。但是,您要做的是检查letter对象的属性是否为(或不是)null。

只是作为一个建议,而不是使用char作为类型,使用Character,它是封装char类型的类。

您的课程可能如下所示:

class Cell {
    int column;
    int row;
    Character letter;

    public Cell(int column, int row, Character letter) {
        super();
        this.column = column;
        this.row = row;
        this.letter = letter; // This is an object, not a primitive type 
    }

    public boolean isEmpty() {
        if (letter==null) 
            return true;
        else 
            return false;
    }
}
于 2013-04-04T00:54:28.277 回答
0

this不可能是null因为this您的实例是 a Cell。无需更改charCharacter

class Cell {
    int column;
    int row;
    char letter;

    public Cell(int column, int row, char letter) {
        super();
        this.column = column;
        this.row = row;
        this.letter = letter;
    }

    public boolean isEmpty() {
        return letter == 0;
    }
}
于 2016-05-02T19:49:56.990 回答