JDK8新特性,方法的引用

Posted GodTelMe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8新特性,方法的引用相关的知识,希望对你有一定的参考价值。

引用方法并运行

在Java中,方法和构造方法都看作是对象的一种,那么你要引用它(不是调用),则可以用::来引用。用来存储这个引用的类型用@FunctionlaInterface注解来标识。

示例:

package fun;

/**
 * @author 施俊杰
 * @email shijunjie.me@outlook.com
 */
public class TestMethods {
    
    @FunctionalInterface
     interface Fun<F1, F2, T> {
         T myrun(F1 from1, F2 from2);
     }
    
     public int add(int x, int y) {
         return x+y;
     }
    
    public static void main(String[] args) {
        Fun<Integer, Integer, Integer> f = new TestMethods()::add;
        int i = f.myrun(1, 2);
        System.out.println(i);
        System.out.println(f.toString());
    }
    
}

运行结果:

 

通过引用构造函数来创建对象

示例如下

package interfacetest;

/**
 * @author 施俊杰
 * @email shijunjie.me@outlook.com
 */
public class TestMethods2 {
    private int i;
    private int j;
    public TestMethods2(int i, int j) {
        this.i = i;
        this.j = j;
    }
    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
    public int getJ() {
        return j;
    }
    public void setJ(int j) {
        this.j = j;
    }
    
    @Override
    public String toString() {
        return "TestMethods2 [i=" + i + ", j=" + j + "]";
    }



    @FunctionalInterface
    interface constructor<F1, F2, T> {
        T create(F1 f1, F2 f2); 
    }

    public static void main(String[] args) {
        constructor<Integer, Integer, TestMethods2> c = TestMethods2::new;
        TestMethods2 obj = c.create(1, 2);
        System.out.println(obj);
    }
}

运行结果:

 

以上是关于JDK8新特性,方法的引用的主要内容,如果未能解决你的问题,请参考以下文章

JDK8新特性2--方法引用

JDK8新特性2--方法引用

JDK8新特性2--方法引用

《JDK8新特性专题》-04方法引用

学习-jdk8 特性

Jdk8新特性之方法引用