JAVA 11 - 可选 - 类中无效的方法引用方法 isPresent 可选 - 无法从静态上下文中引用非静态方法

标签 java lambda static option-type java-11

我不明白为什么当我构建项目时出现此错误

Error:(118, 17) java: incompatible types: invalid method reference method isPresent in class java.util.Optional cannot be applied to given types required: no arguments found: com.siplec.matricee.adresse.model.AdresseVersion reason: actual and formal argument lists differ in length

我的代码:

var optionalAdresseVersion = adresseVersionRepository
    .findByIdVersionAndDeletedDateIsNull(idVersion);

var idAdresse = optionalAdresseVersion
    .filter(Optional::isPresent)
    .map(Optional::get);

方法 - findByIdVersionAndDeletedDateIsNull

我使用JpaRepository接口(interface)

@Repository
public interface AdresseVersionRepository extends JpaRepository<AdresseVersion, AdresseVersionFk> {

Optional<AdresseVersion> findByIdVersionAndDeletedDateIsNull(String idVersion);
}

对象 - 地址版本

@IdClass(value = AdresseVersionFk.class)
@Data
@Builder
@Entity
@Table(name = "ADRESSE_VERSION")
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = {"idAdresse", "idVersion"})
public class AdresseVersion extends AbstractAuditingEntity {

  @Id
  @Column(name = "ADRESSE_FK")
  private String idAdresse;

  @Id
  @Column(name = "ID_ADRESSE_VERSION")
  private String idVersion;

  @Column(name = "DELETED_DATE")
  private ZonedDateTime deletedDate;
}

此外,当我尝试使用对象可选时,我不明白 IntelliJ IDEA 发出的错误消息:

"Non-static method cannot be referenced from a static context"

最佳答案

optionalAdresseVersion的类型是Optional<AdresseVersion> , filter参数类型为Predicate<? super AdresseVersion>

var idAdresse = optionalAdresseVersion
    .map(AdresseVersion::getIdAdresse).orElse(null);

关于JAVA 11 - 可选 - 类中无效的方法引用方法 isPresent 可选 - 无法从静态上下文中引用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57217312/

相关文章:

java - 我试图弄清楚如何在纸牌游戏课上处理牌组中的牌

java - 我怎样才能在java中混合2个列表

java HttpClient-4.1.2 jar

c++ - 检查泛型 lambda 参数的类型

c++ - 如何声明一个静态变量但不定义它

Java Swing JLabel 未出现

python - map (lambda x : int(x, 16)/256.0,[颜色[1 :3],颜色[3 :5],颜色[5:7]])

node.js - 处理 Postgres 表中所有数据的最快方法?

objective-c - 如何像常量一样声明我自己的 CGRectZero?

python - 如何根据构造函数参数初始化静态成员?