Java lambda表达式与泛型整理总结

作者:·~简单就好 时间:2021-07-15 19:57:14 

泛型

泛型的语法定义

class 类名 <泛型标识,泛型标识,&hellip;>{ private 泛型标识1,变量名;常用的泛型标识:T,E,K,V } 里面正常写法

public class GenericDemo<K> {
   //定义数组
   private K[] arr;
}

泛型的使用语法

  • 类名<具体的数据> 对象名 = new 类名<具体的数据类型>()

  • jdk1.7之后,后边的<>可以省略不写

  • 类名<具体的数据> 对象名 = new 类名<>()

泛型总结

  • 类型参数化,让类的定义更加通用

  • 泛型不支持基本类型,因为在编译时,基本类型无法转换成Object

  • 泛型类在创建对象的时候,如果没有指定数据类型,将按照Object类型来操作

  • 同一泛型类在逻辑上可以看成是多个不同的类型,但实际是相同的类型

从泛型类派生子类

子类也是泛型,子类和父类的泛型要一致 (例如:连泛型的类型T要一致,写的内容相同),

如果父类没有指明类型,则父类要按照Object类型处理

public class Child<T> extends Parent<T> {
}

子类不是泛型,父类要明确泛型类型,

如果父类没有指明类型,则父类要按照Object类型处理

泛型接口

  • 泛型接口的语法定义:interface 接口名<泛型标识1,泛型标识2,&hellip;>{ 泛型标识 方法名(); &hellip; }

  • 实现类也是泛型,实现类和接口的泛型要一致,如果接口没有指明类型,则接口要按照Object类型处理

  • 实现类不是泛型,接口要明确泛型接口的数据类型,如果接口没有指明类型,则接口按照Object类型处理

lambda表达式

lambda表达式概念

  • 面向对象的编程中强调,必须通过对象的形式去做事情;函数思想则是尽量忽略对象的复杂写法,&ldquo;强调做什么,而不是以什么形式去做&rdquo;

  • lambda表达式就是函数思想的体现

  • lambda表达式就是定义函数式的简化写法,而不是函数调用的简化写法

lambda表达式格式

  • 三要素:形式参数,箭头,代码块

  • 形如:(形参)->代码块

  • 形参如果多个参数,参数之间逗号隔开,如果没有参数,留空括号,不用留空格

  • -> 一定的是英文,固定写法,表示执行

  • 代码块:具体要做的事情

  • 使用前提:使用接口:接口当中有且只有一个抽象方法

代码示例:

package com.lambda;
public class Lambda {
   public static void main(String[] args) {
       //正常写法
       Mythread mythread = new Mythread();
       Thread t = new Thread(mythread);
       t.start();
       //匿名内部类
       new Thread(new Runnable() {
           @Override
           public void run() {
               System.out.println("多线程1就绪了");
           }
       }).start();
       //lambda表达式:创建线程
       new Thread(()->{
           System.out.println("多线程2就绪了");
       }).start();
   }
}
class Mythread implements Runnable{
   @Override
   public void run() {
       System.out.println("多线程就绪");
   }
}

来源:https://blog.csdn.net/qq_45830276/article/details/125144104

标签:Java,lambda,表达式,泛型
0
投稿

猜你喜欢

  • 学习Java HashMap,看这篇就够了

    2023-11-11 11:18:56
  • java JUC信号量Semaphore原理及使用介绍

    2023-01-02 02:08:57
  • SpringBoot使用GraphQL开发Web API实现方案示例讲解

    2023-05-17 16:50:22
  • Android ViewPager2 使用及自定义指示器视图实现

    2022-06-16 09:35:26
  • 基于Java+SpringBoot+Vue前后端分离实现仓库管理系统

    2023-11-01 04:21:22
  • Activiti如何启动流程并使流程前进

    2023-11-18 18:38:51
  • 一篇文章轻松搞懂Java中的自旋锁

    2023-06-29 00:00:36
  • Android ScrollView无法填充满屏幕的解决办法

    2022-01-07 03:20:55
  • Android软键盘弹出时的界面控制方法

    2022-10-26 03:37:43
  • 浅谈一下SpringCloud中Hystrix服务熔断和降级原理

    2021-10-02 08:46:41
  • C#基于XNA生成随机颜色的方法

    2021-07-05 08:34:50
  • 关于Android中ListView嵌套GridView的问题

    2023-09-16 10:56:39
  • MyBatis中动态sql的实现方法示例

    2022-08-26 06:02:31
  • 详解使用Spring Security进行自动登录验证

    2021-07-28 12:31:51
  • javac -encoding 用法详解

    2022-06-28 08:58:08
  • Android实现 EditText输入手机号空格功能

    2021-09-17 00:29:27
  • Android移动应用开发指南之六种布局详解

    2022-09-10 06:23:44
  • SpringMVC使用RESTful接口案例

    2021-10-10 20:03:45
  • Android中Toolbar随着ScrollView滑动透明度渐变效果实现

    2023-10-08 21:06:50
  • SpringBoot项目鉴权的4种方式小结

    2021-10-23 20:10:05
  • asp之家 软件编程 m.aspxhome.com