问题
I came across this amazing topic on https://www.baeldung.com/java-pattern-matching-instanceof. But when I try to run the following code, it throws compile time error:
if(obj instanceof String s) {
System.out.println(s);
}
I am using Java 14.
回答1:
This is a preview feature in Java 14, see JEP 305 and JEP 375. To enable this, compile your class with:
javac MainClass.java --enable-preview --release 14
And now you can do:
java MainClass --enable-preview
Example of instanceof
:
Object o = "Hello World!";
if(o instanceof String s) {
// no explicit type casting
s = s.replaceFirst("World", "Java"); // No compile time issues
System.out.println(s);
}
Another example copied from JEP:
if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}
来源:https://stackoverflow.com/questions/61939967/pattern-matching-instanceof