【发布时间】:2023-01-02 11:03:29
【问题描述】:
我有 Java 19,我正在尝试对我创建的记录进行一些简单的模式匹配。但是,Java 给我一个非常混乱的编译错误。这是我能做的导致错误的最简单的例子。
public class ExpressionTypeIsASubsetOfPatternType
{
public record Triple(int a, int b, int c) {}
public static void main(String[] args)
{
System.out.println("Java Version = " + System.getProperty("java.version"));
final Triple input = new Triple(1, 2, 3);
if (input instanceof Triple t)
{
System.out.println("Made it here");
}
}
}
这是当我尝试运行/编译时它给我的错误。
$ java ExpressionTypeIsASubsetOfPatternType.java
ExpressionTypeIsASubsetOfPatternType.java:15: error: expression type Triple is a subtype of pattern type Triple
if (input instanceof Triple t)
^
1 error
error: compilation failed
令人惊讶的是,谷歌搜索这个错误没有任何用处。我已经习惯了输入错误并立即看到问题。我想这是因为这个功能太新了。
无论如何,我能找到的最接近的东西是一个相关的bug,但绝对不是我正在处理的同一个问题。
最后,这里是关于我的java版本的相关信息。
$ java --version
openjdk 19 2022-09-20
OpenJDK Runtime Environment (build 19+36-2238)
OpenJDK 64-Bit Server VM (build 19+36-2238, mixed mode, sharing)
$ javac --version
javac 19
【问题讨论】:
标签: java pattern-matching instanceof java-record