我不明白为什么当我构建项目时出现此错误
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/