Java构造函数是一种特殊的方法,它用于创建对象。它可以引用其他类,以便在创建对象时使用其他类的功能。
Java构造函数可以引用其他类的成员变量和方法,这样就可以在创建对象时使用其他类的功能。例如,如果要创建一个新的学生对象,可以使用Student类中定义的成员变量和方法来实现。
public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
上面是一个Student类的例子,它有两个成员变量name和age,并且有一个构造函数来初始化这些成员变量。此外,还有两个getter方法来获取name和age的值。
public class Test { public static void main(String[] args) { Student s1 = new Student("John", 20); System.out.println("Name: " + s1.getName()); System.out.println("Age: " + s1.getAge()); } }
上面是一个Test类的例子,它使用Student类中定义的构造函数来创建一个新的学生对象s1。然后使用Student类中定义的getter方法来获取s1对象中name和age成员变量的值。
因此,Java构造函数不仅能够引用其他类中定义的成员变量,还能够引用其他类中定义的方法。这样就能够在创建对象时使用其他类中已有功能,而不必再去重新定义相同功能代码。
我们可以使用构造函数创建一个lambda表达式。
使用构造函数引用的语法是:
ClassName::new
关键字new指的是类的构造函数。编译器根据上下文选择一个构造函数。
import java.util.function.Function; import java.util.function.Supplier; public class Main{ public static void main(String[] argv){ Supplier<String> func1 = () -> new String(); System.out.println("Empty String:"+func1.get()); Function<String,String> func2 = str -> new String(str); System.out.println(func2.apply("www..cn")); Supplier<String> func3 = String::new; System.out.println("Empty String:"+func3.get()); Function<String,String> func4 = String::new; System.out.println(func4.apply("www..cn")); } }
上面的代码生成以下结果。
我们可以使用数组构造函数创建一个数组如下。
ArrayTypeName::new
int [] :: new
是调用 new int []
。 new int []
需要一个 int
类型值作为数组长度,因此 int [] :: new
需要一个 int
类型输入值。
以下代码使用数组构造函数引用创建一个int数组。
import java.util.Arrays; import java.util.function.IntFunction; public class Main{ public static void main(String[] argv){ IntFunction<int[]> arrayCreator1 = size -> new int[size]; // Creates an int array of five elements int[] intArray1 = arrayCreator1.apply(5); System.out.println(Arrays.toString(intArray1)); IntFunction<int[]> arrayCreator2 = int[]::new; int[] intArray2 = arrayCreator2.apply(5); System.out.println(Arrays.toString(intArray2)); } }
上面的代码生成以下结果。
通过使用 Function< Integer,Array Type>
,我们可以在声明中指定数组类型。
import java.util.Arrays; import java.util.function.Function; public class Main{ public static void main(String[] argv){ Function<Integer,int[]> arrayCreator3 = int[]::new; int[] intArray = arrayCreator3.apply(5); System.out.println(Arrays.toString(intArray)); } }
上面的代码生成以下结果。
我们可以在创建二维数组时指定第一维的长度。
import java.util.Arrays; import java.util.function.IntFunction; public class Main{ public static void main(String[] argv){ IntFunction<int[][]> TwoDimArrayCreator = int[][]::new; int[][] intArray = TwoDimArrayCreator.apply(5); // Creates an int[5][] array intArray[0] = new int[5]; intArray[1] = new int[5]; intArray[2] = new int[5]; intArray[3] = new int[5]; intArray[4] = new int[5]; System.out.println(Arrays.deepToString(intArray)); } }
上面的代码生成以下结果。
Java Lambda-Java函数接口FunctionT, R 接口有六个特殊化:IntFunctionRLongFunctionRDoubleFunctionRToIntFunctionTToLongFunct...
Java流 -Java流组合reduce()操作组合流中的所有元素以产生单个值。reduce操作采用两个称为种子(初始值)和累加器的参数。累加器是...
JavaFX教程 -JavaFX时间轴动画通过更改节点的属性(如大小,位置和颜色等)创建动画。时间轴动画会随着时间的推移更新属性值。Java...
JavaFX教程 -JavaFX树视图TreeView UI控件为我们提供了一种渲染树结构的方法。 树具有包含所有分层值的根节点。import javafx.ap...