java方法引用::

简介: java方法引用::

一、通过对象名来引用方法

对象::成员方法

对象和方法已经存在了可以使用

public class MethodreObjedg {
    public  void print_up_string(String s){
        System.out.println(s.toUpperCase());
    }
}


public interface Printable {
    void pirnt(String s);
}
private static void showpitn(Printable pr) {
        pr.pirnt("hello,world");
    }
MethodreObjedg objedg = new MethodreObjedg();
showpitn(objedg::print_up_string);

二、通过类名引用静态成员方法

类名::静态成员方法

@FunctionalInterface
public interface Calcable {
    public  abstract int cal_abs(int number);
}
public class demo{
    public static void main(String[] args) {
        System.out.println(method(-1, (number) -> Math.abs(number)));
        System.out.println(method(-2, Math::abs));
    }
    public static  int method(int number,Calcable cal){
        return cal.cal_abs(number);
    }
}

三、通过super引用父类的成员方法

super::方法名

函数接口

@FunctionalInterface
public interface Greetable {
    public abstract void greet();
}

父类

public class Human {
    public void say(){
        System.out.println("hello,Human");
    }
}

子类

public class Persion extends Human {
    @Override
    public void say() {
        System.out.println("hello,Persion");
    }
    public void method(Greetable g){
        g.greet();
    }
    public void show(){
        method(()->{
            Human human = new Human();
            human.say();
        });
        method(super::say);
    }
 
    public static void main(String[] args) {
        Persion persion = new Persion();
        persion.show();
    }
}

四 通过this引用本类的成员方法

this::方法名

@FunctionalInterface
public interface Greetable {
    public abstract void greet();
}
public class green_test {
    public void method(Greetable greetable) {
        greetable.greet();
    }
 
    public void say() {
        System.out.println("我是本类方法");
    }
 
    public void show() {
        method(this::say);
    }
 
    public static void main(String[] args) {
      new green_test().show();
    }
}

五 通过类的构造器引用

类名::new

public class Persion {
    private String name;
 
    public Persion() {
    }
 
    public Persion(String name) {
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
@FunctionalInterface
public interface PersionBuilder {
public abstract Persion builderpersion(String name);
}
public class demo {
    public static void method(PersionBuilder pb,String name){
      Persion per=pb.builderpersion(name);
        System.out.println(per.getName());
    }
 
    public static void main(String[] args) {
    method((name)->new Persion(name),"张无忌");
    method(Persion::new,"张三丰");
    }
}

六 数组的构造器引用

int[]::new

@FunctionalInterface
public interface Array_build {
    public abstract int[] buildarray(int number);
}
public class demo_arraybuild {
    public static int[] createint(Array_build ab,int num){
        return ab.buildarray(num);
    }
    public static void main(String[] args) {
        int[] arr1 = createint((number) -> new int[ number], 5);
        int[] arr2 = createint(int[]::new, 5);
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));
 
 
    }
}

相关文章
|
7天前
|
Java
Java——方法的引用
方法引用允许将已有方法作为函数式接口的实现。使用“::”符号,需具备函数式接口,被引用的方法须存在且参数和返回值需与抽象方法一致。其分类包括:静态方法引用(类::方法名)、成员方法引用(对象::方法名、this::方法名、super::方法名)和构造方法引用(类名::new)。方法引用提高了代码的简洁性和可读性,减少了样板代码。
25 13
Java——方法的引用
|
3天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
10 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
1天前
|
安全 Java API
Java根据URL获取文件内容的实现方法
此示例展示了如何安全、有效地根据URL获取文件内容。它不仅展现了处理网络资源的基本技巧,还体现了良好的异常处理实践。在实际开发中,根据项目需求,你可能还需要添加额外的功能,如设置连接超时、处理HTTP响应码等。
12 4
|
8天前
|
Java API
Java方法的优缺点
Java 方法是编程的基本构建块,具有代码重用性、模块化、易于调试、增强可读性、支持重载和可变参数、封装性及静态与实例方法的灵活性等优点,但也存在性能开销、过度抽象、限制使用环境、参数传递开销、命名冲突和堆栈溢出等缺点。合理设计方法可确保代码高效且易维护。
|
3天前
|
安全 Java
java调用方法
java调用方法
17 4
|
8天前
|
Java
Java的方法详解
在 Java 中,方法是执行特定任务的代码块,包括定义、参数传递、返回值处理及重载等功能。
|
17天前
|
Java
Java的方法详解
Java的方法是类中的重要组成部分,用于定义类的行为。方法可以接收参数、执行操作并返回结果。其基本语法包括返回类型、方法名、参数列表和方法体。方法支持重载,即同名但参数不同的多个方法;静态方法则直接通过类名调用,无需实例化。此外,Java还支持可变参数,允许方法接收不定数量的参数。通过访问修饰符如`public`、`protected`、`private`,可以控制方法的可见性。方法是实现类功能的基本单元,增强了程序的灵活性和复用性。
|
24天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
4天前
|
Java 索引
java基础扫盲-String类常用的方法
java基础扫盲-String类常用的方法
|
29天前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
31 5