• 构造函数和函数式接口


    此处,讲述构造函数有0  、 1 、2 、3 (需要自己定义相应的函数式接口)个参数的时候,应该使用的函数式接口:

    构造方法引用: Class::new

    首先,定义Apple对象,并定义有0  、 1 、2 、3个参数的构造函数:

    public class Apple {

    public Apple() {
    System.out.println("Constructor without parameter");
    }

    public Apple(double weight) {
    this.weight = weight;
    System.out.println("Constructor with 1 parameter: weight");
    }

    public Apple(String location, double weight) {
    this.location = location;
    this.weight = weight;
    System.out.println("Constructor with 2 parameters: location and weight");
    }

    public Apple(String location, double weight, String color) {
    this.location = location;
    this.weight = weight;
    this.color = color;
    System.out.println("Constructor with 3 parameters: location and weight and color");
    }

    private String location;
    private double weight;
    private String color;

    public String getLocation() {
    return location;
    }

    public void setLocation(String location) {
    this.location = location;
    }

    public double getWeight() {
    return weight;
    }

    public void setWeight(double weight) {
    this.weight = weight;
    }

    public String getColor() {
    return color;
    }

    public void setColor(String color) {
    this.color = color;
    }

    }

    如下是当构造函数有0 、 1 、 2 、3 个 参数时,使用函数式接口测试调用相应构造方法的例子:

    
    

    import java.util.function.BiFunction;
    import java.util.function.Function;
    import java.util.function.Supplier;

    
    

    public class AppleTest {

    
    

    public static void main(String[] args) {

    
    

    //等价于Supplier<Apple> c1 = () -> new Apple();
    //指向new Apple()的构造函数引用
    Supplier<Apple> c1 = Apple::new;
    Apple a1 = c1.get();

    //指向Apple(Double weight)的构造函数引用
    //R apply(T t);
    Function<Double, Apple> c2 = Apple::new;
    Apple a2 = c2.apply(10.0);

    //指向Apple(String location, Double weight)的构造函数引用
    // R apply(T t, U u);
    BiFunction<String, Double, Apple> c3 = Apple::new;
    Apple a3 = c3.apply("Beijing", 12.0);

    //指向 Apple(String location, double weight, String color)的构造函数引用
    //R apply(T t, U u, V v);
    TriFunction<String, Double, String, Apple> c4 = Apple::new;
    Apple a4 = c4.apply("Beijing", 12.0, "Red");

    }

    
    

    }

     

    其中,当我们需要使用函数式接口调用有 3 个参数的构造函数时,需要定义如下函数式接口:

    public interface TriFunction<T, U, V, R> {
    R apply(T t, U u, V v);
    }

    如下是AppleTest 的运行结果:

  • 相关阅读:
    sys.exc_info()方法:获取异常信息
    tempfile模块:生成临时文件和临时目录
    fnmatch模块:用于文件名的匹配
    pathlib模块用法详解
    linecache模块 随机读取文件指定行
    fileinput模块:逐行读取多个文件
    asyncio异步IO--协程(Coroutine)与任务(Task)详解
    Python中协程异步IO(asyncio)详解
    删除某个时间段之前的文件
    Mac入门--如何使用brew安装多个PHP版本
  • 原文地址:https://www.cnblogs.com/luffystory/p/11976082.html
Copyright © 2020-2023  润新知