如何在Java中检查对象是否为空?

如何在Java中检查对象是否为空?,java,exception,null,Java,Exception,Null,检查职位是否被占用的最佳方法是什么?我不认为我应该使用“this==null” 如果某个对象的实例存在,则该实例不能为null!(正如代码大师的评论所说)。但是,您要做的是检查对象的字母属性是否为空 建议不要使用char作为类型,而是使用Character,它是封装char类型的类 然后,您的类可能会如下所示: class Cell { int column; int row; Character letter; public Cell(int column,

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


如果某个对象的实例存在,则该实例不能为
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;
    }
}

我假设
char
单元格的内容
,您想检查该内容是否为
null

首先,
不能为
null
<代码>此是当前对象,因此始终存在

您使用的是
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()

这个
不能为
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() {
        return letter == 0;
    }
}

永远不能为
null
,因为它指向当前对象。您需要一些其他方式来指示
单元格
为空,例如另一个变量(可能是布尔值?)Derek Greer,at,有一长串使用TDD编写tic-tac-toe游戏的示例,他在如何渲染单元格方面面临类似的问题。然而,它是在C#中。不管怎样,我还是推荐它。谢谢。如果不允许我更改字母的类型,是否有任何选项?从默认值
char
if
\u0000
,这不是可打印字符-您可以进行测试。但是不太健壮。我猜您不想从
char
更改为
Character
,因为您在其他代码中已经使用了原语
char
s?由于以下原因,您应该能够在
单元格
类中透明地切换到
字符
。因此,如果
单元格
使用
字符而不是
字符
,则构建新的
单元格
(如
单元格c=new Cell(2,3,'x');
)仍然有效,并且可以使用
检查。否则,您必须为要检查的
letter
选择一些默认值,可能是bmorris591建议的
\u0000
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;
    }
}