getter方法中的Java断言

getter方法中的Java断言,java,assertions,Java,Assertions,假设我们有以下代码: Owner owner; public Owner getOwner(int id) { if (owner == null) owner = Owners.getOwner(id); assert owner != null; return owner; } 如果Owners.getOwnerid返回null会发生什么?如果在返回之前添加了断言,该方法会消亡还是仍然返回null 如果getOwnerid被断言为null,那么如果g

假设我们有以下代码:

Owner owner;
public Owner getOwner(int id)
{
    if (owner == null)
        owner = Owners.getOwner(id);
    assert owner != null;
    return owner;
}
如果Owners.getOwnerid返回null会发生什么?如果在返回之前添加了断言,该方法会消亡还是仍然返回null


如果getOwnerid被断言为null,那么如果getOwnerid.doSomething,则仍将抛出NPE;被称为?

断言可以在运行程序时打开和关闭,默认情况下关闭。如果它们被打开并且它们的条件被触发,JVM将抛出一个断言错误。从您的评论来看,您似乎没有启用断言


因为断言可以消失,所以您不应该将应用程序逻辑建立在断言的基础上:如果您想在某个意外情况下引发错误,请抛出异常。

。。。视情况而定。断言打开了吗?我用这个来运行它:java-Xmx512m-cpSo你应该能够回答你的问题,即使只是通过强制断言,没有?我实际上没有很好地描述我的问题,我只是想知道getter上的断言是否会杀死一个返回值的方法。所以在这种情况下,即使所有者为null,当我使用getOwnerid.doSomething时;我不会有一个NPE,因为断言杀死了程序。我仍然建议尝试它,但在我看来,这不一定是一个很好的方式来强制执行Joni暗示的条件。