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));
 
 
    }
}

相关文章
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
75 9
|
1月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
44 4
|
1月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
38 4
|
1月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
2月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
54 17
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
135 4
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
233 2
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
35 3
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
110 5