Java中获取变量类型的方法有很多,主要有以下几种:
1、使用instanceof关键字。instanceof关键字是Java中的一个比较运算符,它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
Object obj = new String("Hello World"); if(obj instanceof String){ System.out.println("obj is a String"); }
2、使用getClass()方法。getClass()方法是Object类中定义的一个方法,该方法返回一个Class对象,该对象表示此Object所表示的实体(类、接口、数组或原始类型)。
Object obj = new String("Hello World"); Class cls = obj.getClass(); System.out.println(cls); // 输出class java.lang.String
3、使用isInstance()方法。isInstance()方法是Class中定义的一个方法,该方法判断指定对象是否与此Class所表示的对象相同或者是其子孙对象。
Object obj = new String("Hello World"); Class cls = obj.getClass(); if(cls.isInstance(obj)){ // 判断obj是否为cls所表示的对象 System.out.println("obj is a instance of "+cls); // 输出obj is a instance of class java.lang.String }
4、使用equals()方法。equals()方法也是Object中定义的一个方法,该方法判断指定对象和当前对象是否相同。
Object obj1 = new String("Hello World"); Object obj2 = new String("Hello World"); if(obj1.equals(obj2)){ // 判断obj1和obj2是否相同 System.out.println("The two objects are equal."); // 输出The two objects are equal.}
lambda表达式可以访问最终局部变量或局部非最终初始化只有一次的变量。
下面的代码显示我们可以访问和使用最终的局部变量。
import java.util.function.Function; public class Main { public static void main(String[] argv) { final String x = "Hello"; Function<String,String> func1 = y -> {return y + " "+ x ;}; System.out.println(func1.apply(".cn")); } }
上面的代码生成以下结果。
下面的代码有一个变量x,它不是final,只能初始化一次。我们仍然可以在lambda表达式中使用它。
import java.util.function.Function; public class Main { public static void main(String[] argv) { String x = "Hello"; Function<String,String> func1 = y -> {return y + " "+ x ;}; System.out.println(func1.apply(".cn")); } }
上面的代码生成以下结果。
下面的代码显示我们不能改变在lambda表达式之外定义的值。
import java.util.function.Function; public class Main { public static void main(String[] argv) { String x = "Hello"; Function<String,String> func1 = y -> { return y + " "+ x ;}; System.out.println(func1.apply(".cn")); } }
上面的代码生成以下结果。
我们可以更改lambda表达式中的非局部变量。
import java.util.function.Function; public class Main { static String x = "Hello"; public static void main(String[] argv) { Function<String,String> func1 = y -> {x="a"; return y + " "+ x ;}; System.out.println(func1.apply(".cn")); } }
上面的代码生成以下结果。
Java Lambda-Java构造函数引用我们可以使用构造函数创建一个lambda表达式。使用构造函数引用的语法是:ClassName::new关键字new...
Java Lambda-Java函数接口FunctionT, R 接口有六个特殊化:IntFunctionRLongFunctionRDoubleFunctionRToIntFunctionTToLongFunct...
Java流 -Java流组合reduce()操作组合流中的所有元素以产生单个值。reduce操作采用两个称为种子(初始值)和累加器的参数。累加器是...
JavaFX教程 -JavaFX时间轴动画通过更改节点的属性(如大小,位置和颜色等)创建动画。时间轴动画会随着时间的推移更新属性值。Java...
JavaFX教程 -JavaFX树视图TreeView UI控件为我们提供了一种渲染树结构的方法。 树具有包含所有分层值的根节点。import javafx.ap...