【发布时间】:2022-01-26 15:59:05
【问题描述】:
我正在尝试将以下instanceof pattern matching switch 的结果分配给变量languageCodeOfReturnValue。
String languageCodeOfReturnValue = switch (object){
case PlantGuidePageWrapperDTO plantGuidePageWrapperDTO -> plantGuidePageWrapperDTO.getSeedDetailsDTO().getPageSummaryLanguageCode();
case JournalEntryDetailsDTO journalEntryDetailsDTO -> journalEntryDetailsDTO.getLanguageCode();
case JournalOverviewDTO journalOverviewDTO -> journalOverviewDTO.getPageSummaryLanguageCode();
default -> null;
};
但此代码会导致以下警告:
Value 'switch (object){ case PlantGuidePageWrapperDTO plantGuidePageWrapperDTO -> 植物...' 始终为 'null'
当我删除 default 子句时,警告会消失,但随后会出现语法错误,因为 switch 不会涵盖所有可能的值。当我将null 替换为空字符串'' 时,警告消失。但是我真的希望默认值为null。
所以我的问题是双重的:首先,当我在默认情况下返回空值时,为什么 switch 语句的结果总是空的。其次,当没有任何模式匹配时,返回 null 值的正确方法是什么?
谢谢
编辑:我使用 Intellij IDEA 作为 IDE。也许它是一个 inellij IDEA 错误?
【问题讨论】:
-
@OHGODSPIDERS 据我所知,您不必在
pattern matching switch中使用break statements。我还阅读了来自 baeldung 的关于 pattern matching switches 的教程,他在他的switch示例中也没有使用任何break语句。 -
啊,是的。忘了我说的话。我看错了代码。
-
什么是
object? -
object的类型为Object@Seelenvirtuose -
请在 YouTrack 上创建问题:youtrack.jetbrains.com/issues/IDEA 提供代码示例。谢谢
标签: java intellij-idea switch-statement pattern-matching