首页 > 编程语言 >Java8新特性

Java8新特性

时间:2024-05-13 23:19:13浏览次数:23  
标签:System 特性 public methodOne MyInterOne println Java8 out

1 Lambda表达式

1.1 使用Lambda表达式实现函数式接口1

【案例1】函数是接口 MyInterOne

//函数式接口(接口中只有一个抽象方法)
@FunctionalInterface
public interface MyInterOne {
    public abstract void methodOne();
}

【案例2】定义MyInterOneImpl类实现接口MyInterOne

public class MyInterOneImpl implements MyInterOne {
    @Override
    public void methodOne() {
        System.out.println("in MyInterOneImpl methodOne()~~~~~~~~~~~~~~~");
    }
}

【案例3】

public class TestOne {
    public static void main(String[] args) {
        MyInterOne myInterOne = new MyInterOneImpl();
        //0.创建对象调用方法
        myInterOne.methodOne();

        //1.内部类实现接口
        MyInterOne myInterTwo = new MyInterOne() {
            @Override
            public void methodOne() {
                System.out.println("in innerClass methodOne()~~~~~~~~~~~~~~~~");
            }
        };
        myInterTwo.methodOne();

        //2.lambda表达式只能用于实现函数式接口
        MyInterOne myInterThree = () -> {System.out.println("in lambda methodOne()~~~~~~~~~~~~~~~~~~~~~~~");};
        myInterThree.methodOne();
    }
}

 

1.2 使用Lambda表达式实现函数式接口2

【案例1】多个接口,方法分别无参、有一个参数、多个参数

// 函数式接口(接口中只有一个抽象方法)
@FunctionalInterface
public interface MyInterOne {
    public abstract void methodOne();
}

@FunctionalInterface
interface MyInterTwo{
    public abstract void methodTwo(String s);
}

@FunctionalInterface
interface MyInterThree{
    public abstract void methodThree(String s,int i);
}

【案例2】

public class TestTwo {
    public static void main(String[] args) {
        // 函数式实现接口的几种方式
        MyInterOne myInterOne = new MyInterOne() {
            @Override
            public void methodOne() {
                System.out.println("in innerClass methodOne~~~~~~~~~~~~~~~~~");
            }
        };
        myInterOne.methodOne();

        // lambda表达式实现
        //1.接口中的方法 无参
        //1.1 如果方法的实现体有多行代码,则必须保留方法大括号
        MyInterOne myInterOne1 = () -> {
            System.out.println("in myInterTwo methodOne~~~~~~~~~~~~~~~~~~~~~");
        };
        myInterOne.methodOne();
        //1.2 如果方法的实现只有一行代码,则可以省略大括号
        MyInterOne myInterOne2 = () -> System.out.println("in myInterTwo methodOne~~~~~~~~~~~~~~~~~");
        myInterOne2.methodOne();

        //2.单个形参情况下
        //2.1 形参给出类型和形参名
        MyInterTwo myInterTwo = (String s) -> System.out.println(s);
        myInterTwo.methodTwo("hello world1");
        //2.2 形参可以不给类型,只给形参名
        MyInterTwo myInterTwo1 = (s) -> System.out.println(s);
        myInterTwo1.methodTwo("hello world2");
        //2.3 如果形参只有一个参数,则可以省略小括号
        MyInterTwo myInterTwo2 = s -> System.out.println(s);
        myInterTwo2.methodTwo("hello world3");

        // 3.多个形参情况下
        // 3.1给出每个参数的参数类型和参数名
        MyInterThree myInterThree = (String s,int i) -> System.out.println("s="+s+",i="+i);
        myInterThree.methodThree("hello",101);
        // 3.2给出每个参数形参名,省略形参类型
        MyInterThree myInterThree1 = (s,i) -> System.out.println("s="+s+",i="+i);
        myInterThree1.methodThree("ok",202);

    }
}

 

1.3 使用Lambda表达式实现函数式接口3

 

标签:System,特性,public,methodOne,MyInterOne,println,Java8,out
From: https://www.cnblogs.com/apple677/p/16058436.html

相关文章

  • ES 2024 新特性
    ECMAScript2024新特性ECMAScript2024,the15thedition,addedfacilitiesforresizingandtransferringArrayBuffersandSharedArrayBuffers;addedanewRegExp/vflagforcreatingRegExpswithmoreadvancedfeaturesforworkingwithsetsofstrings;andi......
  • 在PLC的扫描特性下,FOR循环里面套IF或者定时器会发生什么?
    1.为什么会提出这个题目在PLC指令的执行过程中,FOR循环会在每个扫描周期执行完一个循环,然后程序才会接着往下扫描在PLC指令的执行过程中,IF判断会在每次扫描中判断一次条件,满足则进入执行体,不满足则跳出IF把IF放在FOR循环里面,会导致循环体执行时间过长,或者其他问题吗?(答案是不会......
  • Mysql事务特性和Mysql事务隔离级别
    事务执行异常处理、提交、回滚:https://www.cnblogs.com/xsj1989/p/17774735.htmlMysql默认的执行引擎是innoDB,支持事务,行级锁定和外键。Mysql事务特性1.原子性:事务是一个不可分割的整体,要么全部成功,要么全部失败。2.一致性:系统从一个正确状态迁移到另一个正确状态。3.隔离性:每个......
  • Python 潮流周刊#50:我最喜欢的 Python 3.13 新特性!
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期分享了12篇文章,11个开源项目,2则音视频,赠书5本《黑客与画家(10万册纪......
  • dotnet 使用自定义特性
    namespaceTETTD.Common{///<summary>///导入excel特性标记字段映射的列///</summary>[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field,AllowMultiple=false)]publicclassReadAttribute:Attribute{p......
  • [转帖]Mysql数据库的事务特性、隔离级别及MVCC多版本并发控制简介
    https://my.oschina.net/tongchengyu/blog/4714950事务的特性数据库如果支持事务,就要满足下面四个特性(ACID)。原子性(A:Atomicity)在一个事务中,多个sql操作,要么一起成功(所有数据操作都成功),要么一起回滚(其中一个没有成功,其他数据操作一起恢复到开始状态)。一致性(C:Consisten......
  • 面向对象的三大特性、封装的介绍及属性、装饰器property、员工管理系统
    【一】面向对象的三大特性封装:封装指的就是把数据与功能都整合到一起继承多态【二】什么是封装封装是对具体对象的一种抽象意思就是将某部分功能和代码隐藏起来,在程序外边看不到,只能在程序内部使用【三】为什么要封装?封装数据的主要原因是:保护隐私(把不想别人......
  • Java面向对象04——三大特性之多态
    多态1、什么是多态在Java中,多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一方法进行不同的实现。具体来说,多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作。2、多态实现的条件在Java中,要实现多态性,就必须满足以下条件:继承关......
  • Elasticsearch - SQL特性
    基于聚合查询(二)求出每个颜色的销售数量、平均价格、最大价格、最小价格、价格总和查询起来比较麻烦:GET/tvs/_search{"size":0,"aggs":{"group_color":{"terms":{"field":"color"},"aggs":{......
  • Mysql-事务的基本特性和隔离级别
    0.背景在数据库中,事务是一组数据库操作,可以将事务操作视为一个基本的工作单元。1.事务的基本特性事务的基本特性“ACID”对于事务呢,就是这一组sql操作,要确保ACID这4个基本特性。哎,八股文不好背,我记忆方式是:一元吃个(原持隔)原子性(Atomicity):事务中的所有操作要么全部执行成功,......