Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中检查NOTNULL的其他方法_Java - Fatal编程技术网

在Java中检查NOTNULL的其他方法

在Java中检查NOTNULL的其他方法,java,Java,我的项目中有很多这样的代码: if (entityRepository.saveEntity(new RemoteEntityBuilder() .appId(appId) .nameSpace(nameSpace) .entityType(entityType) .entityId(entityId) .blobs(Lists.list(new RemoteBlobBuilder() .blobName(blobName) .blobStr

我的项目中有很多这样的代码:

if (entityRepository.saveEntity(new RemoteEntityBuilder()
   .appId(appId)
   .nameSpace(nameSpace)
   .entityType(entityType)
   .entityId(entityId)
   .blobs(Lists.list(new RemoteBlobBuilder()
      .blobName(blobName)
      .blobStream(new SimpleRemoteInputStream(inputStream))
      .build()))
   .build()) != null) {  
   // Meaning entity was saved
} else {
   // Meaning entity was not saved
}
saveEntity
方法返回NULL(如果操作失败)或操作成功时保存的对象/实体。我的问题是,有没有更好的方法用
!=空
例如:

if(entityRepository.saveEntity(...)) {
}
或者别的什么

更新:

saveEntity
方法如下

  @Override public RemoteEntity saveEntity(RemoteEntity entity)
      throws NotBoundException, RemoteException {
    RemoteEntities remoteEntities = saveEntities(new RemoteEntity[] {entity});
    return remoteEntities != null ? remoteEntities.entities().stream().findFirst().get() : null;
  }
多亏了YCF\u L,现在的情况如下:

  entityRepository.saveEntity(new RemoteEntityBuilder()
                .appId(appId)
                .nameSpace(nameSpace)
                .entityType(entityType)
                .entityId(entityId)
                .blobs(Lists.list(new RemoteBlobBuilder()
                    .blobName(blobName)
                    .blobStream(new SimpleRemoteInputStream(inputStream))
                    .build()))
                .build()).ifPresentOrElse(remoteEntity -> {
              pubSubService.updated(remoteEntity.appId(), remoteEntity.nameSpace(),
                  remoteEntity.entityType(), remoteEntity.entityId());
              setStatus(Status.SUCCESS_CREATED);
            }, () -> {
              setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
            });
以下是代码在IDE中的外观(在我看来非常干净):

什么是“更好”可能是一个意见问题

根据您的示例,实现这一点的方法是创建另一个调用
saveEntity()
并返回
true
false
的方法。(我确实想知道为什么
saveEntity()
在其操作失败时不抛出异常——这在我的经验中更为正常。)

如果您只是不喜欢比较难以发现,您可能会颠倒顺序:

if (null != entityRepository.saveEntity(...))
我可能会将调用完全移到if之外,因为我发现条件句中的副作用可能会令人困惑

RemoteEntity myEntity = entityRepository.saveEntity(...)
if (myEntity != null) ...
什么是“更好”可能是一个意见问题

根据您的示例,实现这一点的方法是创建另一个调用
saveEntity()
并返回
true
false
的方法。(我确实想知道为什么
saveEntity()
在其操作失败时不抛出异常——这在我的经验中更为正常。)

如果您只是不喜欢比较难以发现,您可能会颠倒顺序:

if (null != entityRepository.saveEntity(...))
我可能会将调用完全移到if之外,因为我发现条件句中的副作用可能会令人困惑

RemoteEntity myEntity = entityRepository.saveEntity(...)
if (myEntity != null) ...

在您的情况下,我将使用
可选

public Optional<RemoteEntity> saveEntity(RemoteEntity entity) throws NotBoundException, RemoteException {
    RemoteEntities remoteEntities = saveEntities(new RemoteEntity[]{entity});
    return remoteEntities.entities().stream()
            .findFirst();
}
事实上,您有许多可选的
选项
,您还可以使用
ifPresent

entityRepository.saveEntity(...)
    .ifPresent(r -> ..)
或引发异常:

entityRepository.saveEntity(...)
    .orElseThrow(() -> ..)

在您的情况下,我将使用
可选

public Optional<RemoteEntity> saveEntity(RemoteEntity entity) throws NotBoundException, RemoteException {
    RemoteEntities remoteEntities = saveEntities(new RemoteEntity[]{entity});
    return remoteEntities.entities().stream()
            .findFirst();
}
事实上,您有许多可选的
选项
,您还可以使用
ifPresent

entityRepository.saveEntity(...)
    .ifPresent(r -> ..)
或引发异常:

entityRepository.saveEntity(...)
    .orElseThrow(() -> ..)

您所说的使用!=例如,null:?我的意思是我可以构建一个新方法,比如
saveEntityBoolean
,来包装它,但这有点过分,API看起来很糟糕。类似于,
if(saved){//do stuff}
正确使用异常可能是一种方法。。并且避免使用null。。这个方法“saveEntities”如果不能成功保存实体,可能会引发一些异常。另外,我更喜欢避免在方法上返回null,基本上是为了使客户端代码更干净,检查这个有趣的post@quarks我认为你构建对象的方式很难看,我会创建一个单独的变量,这可以使您的代码更加清晰明了您的意思是,有没有更好的方法使用!=例如,null:?我的意思是我可以构建一个新方法,比如
saveEntityBoolean
,来包装它,但这有点过分,API看起来很糟糕。类似于,
if(saved){//do stuff}
正确使用异常可能是一种方法。。并且避免使用null。。这个方法“saveEntities”如果不能成功保存实体,可能会引发一些异常。另外,我更喜欢避免在方法上返回null,基本上是为了使客户端代码更干净,检查这个有趣的post@quarks我认为你构建对象的方式很难看,我会创建一个单独的变量,这可以使您的代码更加清晰明了是的,这实际上是有意义的
stream()。您不需要
.orElse(可选的.empty())
是的,这实际上是有意义的
stream().findFirst()
实际上返回一个可选的。您不需要
.orElse(可选的.empty())