栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java函数式接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java函数式接口

1.什么是函数式接口

函数式接口

@FunctionalInterface
public interface DemoStart {
    public abstract void method();
}

实现

public class DemoImpl implements DemoStart{
    public static void main(String[] args) {

    }

    @Override
    public void method() {
        System.out.println("实现了函数式接口");
    }
}

使用

public class FunctionsImpl {
    //函数式接口的使用一般可以作为方法的参数或返回值类型
    private static void method(DemoStart s) {
        s.method();
    }
    public static void main(String[] args) {
    //1.调用show方法,方法的参数是一个接口所以可以床底接口的实现类对象
        method(new DemoImpl());
    //2.调用show方法,方法的参数是一个接口,所以我们可以传递接口的匿名内部类
        method(new DemoStart() {
            @Override
            public void method() {
                System.out.println("匿名内部类的形式!!!");
            }
        });
        //3.调用show方法其,方法的参数是一个接口,所以可以用lambda表达式
        method(()->{
             System.out.println("lambda表达式的方法!");
        });
        //3.调用show方法其,方法的参数是一个接口,所以可以用lambda表达式(简化)
        method(()-> System.out.println("lambda表达式(简化)的方法!"));
    }

}
函数式接口作为方法参数
使用lambda表达作为参数减少性能浪费(必须为函数式接口)

package DiaryDemo;

public interface Diary {
    String method();
}
package DiaryDemo;


public class Main {
    public static void main(String[] args) {
        String a="i";
        String a1="love";
        String a2="you";
        method(1,a+a1+a2);
        method(2,a+a1+a2);
        method1(1,()->a+a1+a2);
        method1(2,()->a+a1+a2);
    }
    private static void method(int i, String s) {
        if(i==1){
            System.out.println(s);
        }
    }
//    private static void method1(int i, Diary s) {
//        System.out.println("调用了方法2");
//        if(i==1){
//            System.out.println(s.method());
//        }
//    }
    private static void method1(int i, Diary s) {
    if(i==2){
        System.out.println("不满足条件不执行");
    }
}
}

函数式接口作为返回值类型

package DiaryDemo;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class CompareDemo {

    private static Comparator getCompare(){
//        return new Comparator(){
//            @Override
//            public int compare(String o,String o1) {
//               return o.length()- o1.length();
//            }
//        };
//        return (String o1,String o2)->{
//            return o1.length()-o2.length();
//        };
        return (o1,o2)->o1.length()-o2.length();
    }
    public static void main(String[] args) {
        String []arr={"adadawsdasd","456456456","adad"};
        Arrays.sort(arr,getCompare());
        for (String s :
                arr) {
            System.out.println(s);
        }
        Arrays.sort(arr, new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                return o2.length()-o1.length();
            }
        });
        for (String s :
                arr) {
            System.out.println(s);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号