java.util.Optional.orElseGet()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(8.7k)|赞(0)|评价(0)|浏览(216)

本文整理了Java中java.util.Optional.orElseGet()方法的一些代码示例,展示了Optional.orElseGet()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Optional.orElseGet()方法的具体详情如下:
包路径:java.util.Optional
类名称:Optional
方法名:orElseGet

Optional.orElseGet介绍

[英]Return the value if present, otherwise invoke other and return the result of that invocation.
[中]返回值(如果存在),否则调用other并返回该调用的结果。

代码示例

代码示例来源:origin: prestodb/presto

private static String toQualifedName(Object objectName, Optional<String> columnName)
{
  return columnName.map(s -> format("column %s of table %s", s, objectName))
      .orElseGet(() -> "table " + objectName);
}

代码示例来源:origin: prestodb/presto

@Override
public OptionalDouble getValueFromAggregationQueryResult(Object value)
{
  return Optional.ofNullable(value)
      .map(Number.class::cast)
      .map(Number::doubleValue)
      .map(OptionalDouble::of)
      .orElseGet(OptionalDouble::empty);
}

代码示例来源:origin: hs-web/hsweb-framework

@Override
public DictParser getParser(String id, String defaultId) {
  return Optional.ofNullable(parserRepo.get(id)).orElseGet(() -> parserRepo.get(defaultId));
}

代码示例来源:origin: spring-projects/spring-framework

private static <T, S extends Publisher<T>> S readWithMessageReaders(
    ReactiveHttpInputMessage message, BodyExtractor.Context context, ResolvableType elementType,
    Function<HttpMessageReader<T>, S> readerFunction,
    Function<UnsupportedMediaTypeException, S> errorFunction,
    Supplier<S> emptySupplier) {
  if (VOID_TYPE.equals(elementType)) {
    return emptySupplier.get();
  }
  MediaType contentType = Optional.ofNullable(message.getHeaders().getContentType())
      .orElse(MediaType.APPLICATION_OCTET_STREAM);
  return context.messageReaders().stream()
      .filter(reader -> reader.canRead(elementType, contentType))
      .findFirst()
      .map(BodyExtractors::<T>cast)
      .map(readerFunction)
      .orElseGet(() -> {
        List<MediaType> mediaTypes = context.messageReaders().stream()
            .flatMap(reader -> reader.getReadableMediaTypes().stream())
            .collect(Collectors.toList());
        return errorFunction.apply(
            new UnsupportedMediaTypeException(contentType, mediaTypes, elementType));
      });
}

代码示例来源:origin: jooby-project/jooby

/**
 * Filter residual/external properties from jdbc module. See #1044.
 * @param name Property name.
 * @return True if this is a valid flyway property.
 */
static boolean isFlywayProperty(String name) {
 String setter = "set" + name;
 return Stream.of(Flyway.class.getMethods())
   .filter(m -> m.getName().equalsIgnoreCase(setter))
   .findFirst()
   .map(m -> true)
   .orElseGet(() -> ImmutableSet.of("driver", "url", "user", "password").contains(name));
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Get the adapter for the given reactive type. Or if a "source" object is
 * provided, its actual type is used instead.
 * @param reactiveType the reactive type
 * (may be {@code null} if a concrete source object is given)
 * @param source an instance of the reactive type
 * (i.e. to adapt from; may be {@code null} if the reactive type is specified)
 */
@Nullable
public ReactiveAdapter getAdapter(@Nullable Class<?> reactiveType, @Nullable Object source) {
  Object sourceToUse = (source instanceof Optional ? ((Optional<?>) source).orElse(null) : source);
  Class<?> clazz = (sourceToUse != null ? sourceToUse.getClass() : reactiveType);
  if (clazz == null) {
    return null;
  }
  return this.adapters.stream()
      .filter(adapter -> adapter.getReactiveType() == clazz)
      .findFirst()
      .orElseGet(() ->
          this.adapters.stream()
              .filter(adapter -> adapter.getReactiveType().isAssignableFrom(clazz))
              .findFirst()
              .orElse(null));
}

代码示例来源:origin: AxonFramework/AxonFramework

@Override
public <T> MessageHandlingMember<T> wrapHandler(MessageHandlingMember<T> original) {
  boolean isReplayAllowed = (boolean) original
      .annotationAttributes(AllowReplay.class)
      .orElseGet(() -> original.unwrap(Member.class)
                   .map(Member::getDeclaringClass)
                   .map(c -> AnnotationUtils.findAnnotationAttributes(c, AllowReplay.class)
                               .orElse(DEFAULT_SETTING))
                   .orElse(DEFAULT_SETTING)
      ).get("allowReplay");
  if (!isReplayAllowed) {
    return new ReplayBlockingMessageHandlingMember<>(original);
  }
  return original;
}

代码示例来源:origin: hs-web/hsweb-framework

protected T find(Object value) {
  return allOptionSupplier.get()
      .stream()
      .filter(e -> e.eq(value))
      .findFirst()
      .orElseGet(() -> orElseGet.apply(value));
}

代码示例来源:origin: micronaut-projects/micronaut-core

@Override
public String getHost() {
  return serverConfiguration.getHost()
        .orElseGet(() -> Optional.ofNullable(System.getenv(Environment.HOSTNAME)).orElse(SocketUtils.LOCALHOST));
}

代码示例来源:origin: neo4j/neo4j

@Nonnull
private String getDefaultProvider( @Nullable String indexName, @Nonnull Config dbConfig )
{
  return dbConfig.getRaw( "index." + indexName )
      .orElseGet( () -> dbConfig.getRaw( "index" ).orElse( "lucene" ) );
}

代码示例来源:origin: pentaho/pentaho-kettle

/**
 * Returns a copy of loggable options with sensitive data stripped.
 */
private MqttConnectOptions loggableOptions() {
 MqttConnectOptions loggableOptions = getOptions();
 Optional.ofNullable( loggableOptions.getSSLProperties() )
  .orElseGet( Properties::new )
  .keySet().stream()
  .filter( key -> key.toString().toUpperCase().contains( "PASSWORD" ) )
  .forEach( key -> loggableOptions.getSSLProperties().put( key, "*****" ) );
 return loggableOptions;
}

代码示例来源:origin: AxonFramework/AxonFramework

private String selectProcessingGroupByType(Class<?> type) {
  return typeSelectors.stream()
            .map(s -> s.select(type))
            .filter(Optional::isPresent)
            .map(Optional::get)
            .findFirst()
            .orElseGet(() -> defaultTypeSelector.select(type)
                              .orElseThrow(IllegalStateException::new));
}

代码示例来源:origin: baomidou/mybatis-plus

private Field getField(Class<?> clazz) {
    return Optional.ofNullable(TABLE_FIELD_OF_ENUM_TYPES.get(type)).orElseGet(() -> {
      Field field = dealEnumType(clazz).orElseThrow(() -> new IllegalArgumentException("当前[" + type.getName() + "]枚举类未找到标有@EnumValue注解的字段"));
      addEnumType(clazz, field);
      return field;
    });
  }
}

代码示例来源:origin: Netflix/conductor

private Integer getSubWorkflowVersion(Map<String, Object> resolvedParams, String subWorkflowName) {
    return Optional.ofNullable(resolvedParams.get("version"))
        .map(Object::toString)
        .map(Integer::parseInt)
        .orElseGet(
            () -> metadataDAO.getLatest(subWorkflowName)
                .map(WorkflowDef::getVersion)
                .orElseThrow(() -> {
                  String reason = String.format("The Task %s defined as a sub-workflow has no workflow definition available ", subWorkflowName);
                  logger.error(reason);
                  return new TerminateWorkflowException(reason);
                }));
  }
}

代码示例来源:origin: prestodb/presto

@Override
public OptionalDouble getValueFromAggregationQueryResult(Object value)
{
  return Optional.ofNullable(value)
      .map(Number.class::cast)
      .map(Number::doubleValue)
      .map(OptionalDouble::of)
      .orElseGet(OptionalDouble::empty);
}

代码示例来源:origin: spring-projects/spring-framework

private static <P extends Publisher<?>, M extends ReactiveHttpOutputMessage> Mono<Void> writeWithMessageWriters(
    M outputMessage, BodyInserter.Context context, P body, ResolvableType bodyType) {
  MediaType mediaType = outputMessage.getHeaders().getContentType();
  return context.messageWriters().stream()
      .filter(messageWriter -> messageWriter.canWrite(bodyType, mediaType))
      .findFirst()
      .map(BodyInserters::cast)
      .map(writer -> write(body, bodyType, mediaType, outputMessage, context, writer))
      .orElseGet(() -> Mono.error(unsupportedError(bodyType, context, mediaType)));
}

代码示例来源:origin: baomidou/mybatis-plus

/**
 * 反射检查参数类是否启动乐观锁
 *
 * @param parameterClass 实体类
 * @param tableInfo      实体数据库反射信息
 * @return ignore
 */
private EntityField getVersionFieldRegular(Class<?> parameterClass, TableInfo tableInfo) {
  return Object.class.equals(parameterClass) ? null : ReflectionKit.getFieldList(parameterClass).stream().filter(e -> e.isAnnotationPresent(Version.class)).map(field -> {
    field.setAccessible(true);
    return new EntityField(field, true, tableInfo.getFieldList().stream().filter(e -> field.getName().equals(e.getProperty())).map(TableFieldInfo::getColumn).findFirst().orElse(null));
  }).findFirst().orElseGet(() -> this.getVersionFieldRegular(parameterClass.getSuperclass(), tableInfo));
}

代码示例来源:origin: ehcache/ehcache3

@Override
public String valueType() {
 return value().map(CacheEntryType::getValue).orElseGet(() -> extract(source -> JaxbHelper.findDefaultValue(source, "keyType")).orElse(null));
}

代码示例来源:origin: neo4j/neo4j

/**
 * @return a configured setting
 */
public Optional<Object> getValue( @Nonnull String key )
{
  return configOptions.stream()
      .map( it -> it.asConfigValues( params ) )
      .flatMap( List::stream )
      .filter( it -> it.name().equals( key ) )
      .map( ConfigValue::value )
      .findFirst()
      .orElseGet( Optional::empty );
}

代码示例来源:origin: speedment/speedment

private static String getComputerName() {
  final String hostName;
  try {
    hostName = InetAddress.getLocalHost().getHostName();
    if (hostName != null && !hostName.isEmpty()) {
      return hostName;
    }
  } catch (final Exception ex) {
    // Ignore exception.
  }
  return Optional.ofNullable(System.getenv("COMPUTERNAME"))
    .orElseGet(() -> Optional.ofNullable(System.getenv("HOSTNAME"))
      .orElse("unknown")
    );
}

相关文章