JDK8新特性,方法的引用

引用方法并运行

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

示例:

package fun;

/**
 * @author 施俊杰
 * @email [email protected]
 */
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 [email protected]
 */
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);
    }
}

运行结果:

原文地址:https://www.cnblogs.com/s648667069/p/8865395.html

时间: 2024-11-06 03:34:40

JDK8新特性,方法的引用的相关文章

JAVA8新特性——方法引用

JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 在Lamda新特性的支持下,JAVA8中可以使用lamda表达式来创建匿名方法.然而,有时候我们仅仅是需要调用一个已存在的方法(如java中已经定义好的方法),在这时候java8新特性"方法引用"将会进一步简化操作(注意:需要有Lamda的支持). 方法引用的四种形式: 引用静态方法-->类名称::static 方法名称: 引用某个对象的实例的普通方法-->示例化对象::普通方法: 引用某个类型的任意对象

一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)

面试涉及问题含有: Java JDK8新特性 集合(哈希冲突.HashMap的原理.自动排序的集合TreeSet) 多线程安全问题 String和StringBuffer JVM 原理.运行流程.内部结构 Linux 查询含有某字符串内容的命令grep 查询进程.GC状态.杀死进程 Hadoop五种节点介绍 -----------------------------------------------------------------------------------------------

JDK8 新特性

JDK8 新特性目录导航: Lambda 表达式 函数式接口 方法引用.构造器引用和数组引用 接口支持默认方法和静态方法 Stream API 增强类型推断 新的日期时间 API Optional 类 重复注解和类型注解 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升. 如下示例,将一个匿名类转换为Lambda表达

C++新特性 右值引用 移动构造函数

1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision.RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝.下面简单地介绍一下Copy Elision.RVO,对此不感兴趣的可以直接跳过: (1) Copy Elision Copy Elision技术是为了防止某些不必要的临时对象产生和拷贝,例如: struct A { A(int)

java进阶一之jdk8新特性

1.官方发布的jdk8新特性 2.51CTO相关专题

JDK8新特性04 方法引用与构造器引用

import java.io.PrintStream; import java.util.Comparator; import java.util.function.*; /** * 一.方法引用 * lambda方法体之 --> 方法引用:若Lambda 体中的内容有方法已经实现了,我们可以使用"方法引用" * (可以理解为方法引用是Lambda 表达式的另外一种表现形式) * * * 主要有三种语法格式: * * 对象::实例方法名 * * 类::静态方法名 * * 类::实

jdk8新特性

jAVA8 十大新特性 投稿:junjie 字体:[增加 减小] 类型:转载 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API "Java is still not dead-and people are starting to figure that out." 本教程将用带注释的简单代码来描述新特性,你将

类的加载、时机、反射、模板设计、jdk7/jdk8新特性(二十六)

1.类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * 加载 * 就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. * 连接 * 验证 是否有正确的内部结构,并和其他类协调一致 * 准备 负责为类的静态成员分配内存,并设置默认初始化值 * 解析 将类的二进制数据中的符号引用替换为直接引用 * 初始化 就是我们以前讲过的初始化

jdk8新特性之Lambda

Lambda体验Lambda是一个匿名函数,可以理解为一段可以传递的代码.Lambda表达式写法,代码如下:借助Java 8的全新语法,上述 Runnable 接口的匿名内部类写法可以通过更简单的Lambda表达式达到相同的效果 /** * 从匿名类到Lambda表达式的转变 */ @Test public void testLambdaHelloWorld() { // 匿名类01 new Thread(new Runnable() { @Override public void run()

C++11 标准新特性: 右值引用与转移语义

C++ 的新标准 C++11 已经发布一段时间了.本文介绍了新标准中的一个特性,右值引用和转移语义.这个特性能够使代码更加简洁高效. 查看本系列更多内容 | 3 评论: 李 胜利, 高级开发工程师, IBM 2013 年 7 月 10 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 新特性的目的 右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move