当前位置: 首页 > news >正文

网站建设从入门到精通+网盘企业网站首页设计欣赏

网站建设从入门到精通+网盘,企业网站首页设计欣赏,建设平台公司,网站程序找人做还是自己做文章目录一、匿名内部类1. 语法格式2. 使用方法① 传统方式② 匿名内部类方式二、Lambda表达式1. 语法格式2. 使用方法① 匿名内部类方式② Lambda表达式方式三、方法引用1. 语法格式2. 使用方法① 类型的静态方法引用② 类型的构造方法引用③ 类型的实例方法引用④ 对象的实例…

文章目录

  • 一、匿名内部类
    • 1. 语法格式
    • 2. 使用方法
      • ① 传统方式
      • ② 匿名内部类方式
  • 二、Lambda表达式
    • 1. 语法格式
    • 2. 使用方法
      • ① 匿名内部类方式
      • ② Lambda表达式方式
  • 三、方法引用
    • 1. 语法格式
    • 2. 使用方法
      • ① 类型的静态方法引用
      • ② 类型的构造方法引用
      • ③ 类型的实例方法引用
      • ④ 对象的实例方法引用
  • 四、匿名内部类、Lambda表达式、方法引用对比分析总结


一、匿名内部类

匿名内部类可以看作是特殊的局部内部类,其本质就是一个继承类(或实现接口)的匿名子类。

匿名内部类是在使用的时候动态的指定方法体的逻辑,无需每次都去创建一个继承类(或实现接口)的子类。编译器会在编译阶段自动生成一个匿名子类。

1. 语法格式

匿名内部类的语法格式:new 接口名|类名(){重写方法}

其中,如果重写方法为非必要的,原则上是可以没有重写方法部分的。

2. 使用方法

① 传统方式

父子类:

public class ParentClass {public void aa(String str) {}public void bb(String str) {}
}
public class ChildClass extends ParentClass {@Overridepublic void aa(String str) {System.out.println("自定义方法体");}@Overridepublic void bb(String str) {System.out.println("自定义方法体");}
}
public class Test {public static void main(String[] args) {ParentClass ohj = new ChildClass();}
}

接口实现类:

public interface ParentInterface {void aa(String str);void bb(String str);
}
public class ChildClass implements ParentInterface {@Overridepublic void aa(String str) {System.out.println("自定义方法体");}@Overridepublic void bb(String str) {System.out.println("自定义方法体");}
}
public class Test {public static void main(String[] args) {ParentInterface ohj = new ChildClass();}
}

② 匿名内部类方式

父子类:

public class ParentClass {public void aa(String str) {}public void bb(String str) {}
}
public class Test {public static void main(String[] args) {ParentClass obj = new ParentClass() {@Overridepublic void aa() {System.out.println("自定义方法体");}@Overridepublic void bb() {System.out.println("自定义方法体");}};}
}

接口实现类:

public interface ParentInterface {void aa(String str);void bb(String str);
}
public class Test {public static void main(String[] args) {ParentInterface obj = new ParentInterface() {@Overridepublic void aa() {System.out.println("自定义方法体");}@Overridepublic void bb() {System.out.println("自定义方法体");}};}
}

二、Lambda表达式

从Java8开始,引入了Lambda表达式。

对于只有一个抽象方法的接口(函数式接口),可以直接使用Lambda表达式创建它的匿名实现类实例。

  • 使用匿名内部类方式定义的内部类:编译之后,会生成一个单独的class字节码文件(外部类名$编号.class);
  • 使用Lambda表达式定义的内部类:编译之后,不会生成一个单独的class字节码文件,对应的字节码会在运行的时候动态生成。

1. 语法格式

Lambda表达式的语法格式:(参数列表) -> {方法体}

省略写法:

  • 小括号内参数的参数类型可以省略
  • 小括号内无参数时,小括号不可省略
  • 小括号内只有一个参数时,小括号可以省略
  • 小括号内有多个参数时,小括号不可省略
  • 大括号内有且只有一行语句时,可以省略

2. 使用方法

public interface ParentInterface {void aa(String str);
}

① 匿名内部类方式

public class Test {public static void main(String[] args) {ParentInterface obj = new ParentInterface() {@Overridepublic void aa(String str) {System.out.println("自定义方法体");}};}
}

② Lambda表达式方式

public class Test {public static void main(String[] args) {ParentInterface obj = str -> System.out.println("自定义方法体");}
}

三、方法引用

方法引用是对Lambda表达式进一步简化,借用其他类的方法体,省去了写方法体的过程。

对于方法体只有一行代码的Lambda表达式(该行代码为调用某个类或某个实例的方法时),可以简洁为更简单的方法引用的方式。

1. 语法格式

方法引用的语法格式:

语法种类语法格式示例参数对应关系
类型的静态方法引用类::静态方法String::valueOf抽象方法的参数与静态方法的参数顺序对应
类型的构造方法引用类::newString::new抽象方法的参数与构造方法的参数顺序对应
类型的实例方法引用类::实例方法String::replaceAll抽象方法的第一个参数为调用引用方法的实例对象

抽象方法的剩余参数与实例方法的参数顺序对应
对象的实例方法引用对象::实例方法s::replaceAll实例对象s为外部参数

抽象方法的参数与实例方法的参数顺序对应

需要注意:

  • 当接口的抽象方法无返回值时,方法引用的方法有无返回值都可以;
  • 当接口的抽象方法有返回值时,方法引用的方法也必须有返回值,且返回值类型 instanceof 接口的抽象方法返回值类型

2. 使用方法

① 类型的静态方法引用

类型的静态方法引用:类名::静态方法

对应Lambda表达式:(参数1,参数2,…) -> 类名.静态方法(参数1,参数2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s);
}
public class Test {public static void main(String[] args) {// 类型的静态方法引用ParentInterface parentInterface1 = String::valueOf;// 对应Lambda表达式方式ParentInterface parentInterface2 = s -> String.valueOf(s);}
}

② 类型的构造方法引用

类型的构造方法引用:类::new

对应Lambda表达式:(参数1,参数2,…) -> new 类名(参数1,参数2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s);
}
public class Test {public static void main(String[] args) {// 类型的构造方法引用ParentInterface parentInterface1 = String::new;// 对应Lambda表达式方式ParentInterface parentInterface2 = s -> new String(s);}
}

③ 类型的实例方法引用

类型的实例方法引用:类::实例方法

对应Lambda表达式:(参数1,参数2,…) -> 参数1.静态方法(参数2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s1, String s2, String s3);
}
public class Test {public static void main(String[] args) {// 类型的实例方法引用ParentInterface parentInterface1 = String::replaceAll;// 对应Lambda表达式方式ParentInterface parentInterface2 = (s1,s2,s3) -> s1.replaceAll(s2,s3);}
}

④ 对象的实例方法引用

对象的实例方法引用:对象::实例方法

对应Lambda表达式:(参数1,参数2,…) -> 对象.静态方法(参数1,参数2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s1, String s2);
}
public class Test {public static void main(String[] args) {String s = "";// 对象的实例方法引用ParentInterface parentInterface1 = s::replaceAll;// 对应Lambda表达式方式ParentInterface parentInterface2 = (s1,s2) -> s.replaceAll(s1,s2);}
}

四、匿名内部类、Lambda表达式、方法引用对比分析总结

  • Lambda表达式是匿名内部类的简写(匿名内部类为函数式接口的实现的这种)
  • 方法引用是Lambda表达式的简写(Lambda表达式的方法体只有一行代码且该行代码方法调用)
http://www.yayakq.cn/news/101307/

相关文章:

  • 网站空间续费天津海外seo
  • 定制网站制作平台网站域名有什么用
  • 网站服务器用什么好处群辉怎么做网站
  • 郴州网站seo优化汉语言专业简历制作说明
  • 有经验的企业做网站服务器多少钱
  • 高陵县建设局网站品牌建设规划制定及实施情况
  • 做网站链接怎么选择网站模板
  • 中小企业建站可以怎么做网站制作地点
  • 网站建设 图纸网搭建php网站环境
  • 做单页网站需要做什么视觉设计和平面设计的区别
  • 漳州微信网站建设电话建筑公司简介模板免费下载
  • 网站开发通常叫什么部门西地那非片的功能主治说明书
  • 做网站的图片尺寸怎么设定网站打开风险怎么解决
  • 做网站为什么要买网站空间广西桂林师范大学
  • 网站优化有哪些方法四川省的住房和城乡建设厅网站首页
  • 网站运营学习企业进行网站建设的方式有( )
  • 品牌展示榜ui做的好的网站重庆建设工程造价信息
  • 网站弄好了怎么推广模板之家网页模板下载
  • 做内贸注册什么网站大连网站建设 青鸟传媒
  • 个人cms网站黄页网页的推广网站下载
  • 吴江网站建设做色流网站服务器
  • 版式网站有哪些深圳企业公司做网站
  • 怎样做天猫网站视频工程机械网官网
  • 养老网站建设好看的商城网站设计
  • 南昌网站建设哪里好wordpress 浏览缓慢
  • 昆山网站建设价格搬瓦工可以长期做网站
  • 朝阳网站建设是什么意思辅助购卡网站怎么做
  • 宜宾网站建设略奥网络登录网站怎么做
  • 网站建设企业排行做美工需要哪些网站
  • 电子商务网站建设主要内容wordpress强制跳转