37 lines
900 B
Java
37 lines
900 B
Java
|
// enumerations/SmartCasting.java
|
||
|
// (c)2021 MindView LLC: see Copyright.txt
|
||
|
// We make no guarantees that this code is fit for any purpose.
|
||
|
// Visit http://OnJava8.com for more book information.
|
||
|
// {NewFeature} Since JDK 16
|
||
|
|
||
|
public class SmartCasting {
|
||
|
static void dumb(Object x) {
|
||
|
if(x instanceof String) {
|
||
|
String s = (String)x;
|
||
|
if(s.length() > 0) {
|
||
|
System.out.format(
|
||
|
"%d %s%n", s.length(), s.toUpperCase());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
static void smart(Object x) {
|
||
|
if(x instanceof String s && s.length() > 0) {
|
||
|
System.out.format(
|
||
|
"%d %s%n", s.length(), s.toUpperCase());
|
||
|
}
|
||
|
}
|
||
|
static void wrong(Object x) {
|
||
|
// "Or" never works:
|
||
|
// if(x instanceof String s || s.length() > 0) {}
|
||
|
// error: cannot find symbol ^
|
||
|
}
|
||
|
public static void main(String[] args) {
|
||
|
dumb("dumb");
|
||
|
smart("smart");
|
||
|
}
|
||
|
}
|
||
|
/* Output:
|
||
|
4 DUMB
|
||
|
5 SMART
|
||
|
*/
|