首页 > 其他分享 >6、枚举、泛型、内部类

6、枚举、泛型、内部类

时间:2023-03-17 16:56:37浏览次数:31  
标签:部类 内部 接口 类型 枚举 泛型

枚举、泛型和内部类,主讲:汤小洋

一、枚举

1. 简介

枚举类型是JDK1.5引入的新类型,本质上就是一个类,是自定义的数据类型

作用:

  • 用来限制可能的取值个数

  • 降低出错的几率

  • 提高代码的可读性和可扩展性

应用场景:适用于有限个数的取值

2. 用法

使用enum关键字(enumeration的缩写)

定义方式:public enum 枚举类型名{}

特性:

  • 枚举类型中可以包含属性、方法、构造方法等

  • 构造方法必须是私有的,不允许在外部创建对象,只能在内部创建对象

  • 在内部创建枚举对象时必须位于类的第一行(非注释行)

  • 在内部创建枚举对象时本质上是在调用构造方法,如果调用的是无参构造,可以省略()

  • 可以创建多个枚举对象,多个对象之间以逗号隔开,以分号结束

  • 枚举对象也称为枚举项,本质上是静态常量,通过枚举类型名.枚举项的方式访问,同时在命名上使用所有字母大写的形式

二、泛型

1. 简介

Generic Type泛型本质是参数化类型,所操作的数据类型被指定为一个参数,在使用时确定此类型。

通俗点来说,在定义时不知道具体的类型,在使用时要指定具体的类型,类似于参数,所以称为参数化类型

分类:

  • 泛型类

  • 泛型接口

  • 泛型方法

2. 用法

泛型类:

  • 表示类中有一个未知的类型

  • 定义方式:public class 类名<T>{},T表示的是一种类型,是泛型的类型参数,可以使用任意标识,一般常用T、E、K、V等

  • 可以在类内部使用T,表示一个对象的类型

  • 在使用类时需要在类名后通过<类型>指定具体的类型

  • 在JDK7中支持泛型的类型推断类名<类型> 对象名=new 类名<>();

泛型接口:

  • 表示接口中有一个未知的类型

  • 定义方式:public interface 接口名<T>{}

  • 可以在接口内部使用T,表示一个对象的类型

  • 在使用接口时需要在接口名后通过<类型>指定具体的类型

泛型方法:

  • 表示方法中有一个未知的类型

  • 定义方式:public 修饰符 <T> 返回值类型 方法名(){}

  • 可以在方法中使用T,表示一个对象的类型

  • 在调用方法时指定具体的类型

  • 应用场景:如果类或接口没有定义成泛型,但是想在某个方法中使用泛型(如接收了一个泛型参数),此时可以将该方法定义为泛型方法

特性:

  • 泛型的类型参数必须是引用类型,不能是基本类型

  • 泛型的类型参数可以有多个,即多个泛型参数

  • 可以使用泛型通配符,两种:

    <? extends T>限定类型的上界,参数类型必须是T或T的子类

    <? super T> 限定类型的下界,参数类型必须是T或T的父类

三、内部类

1. 简介

定义在另一个类里面的类,称为内部类Inner Class

包含内部类的类,称为外部类Outer Class

分类:

  1. 成员内部类(非静态内部类)

  2. 局部内部类

  3. 静态内部类

  4. 匿名内部类,最常用

2. 用法

2.1 成员内部类

在外部类中访问内部类:可以访问内部类中的所有成员,包括private修饰的

在外部类外访问内部类:不能访问内部类中private修饰的成员

在内部类中访问外部类:直接访问,如果外部类和内部类的变量名相同,可使用"外部类.this.变量"访问

2.2 局部内部类

局部内部类,也称为方法内部类,即定义在外部类的方法中的类

  • 只能在外部类的方法中使用

  • 在jdk1.8以前,在局部内部类中不能访问外部类的方法中非final修饰的变量

  • 在jdk1.8及以后,外部类的方法中非final修饰的变量也可以被访问,其实是一种语法溏,本质上会自动将变量变为final的

2.3 静态内部类

静态内部类,使用static修饰的成员内部类

不能访问外部类中的非静态成员

2.4 匿名内部类

匿名内部类,即没有名字的内部类,因为此类只需要使用一次,所以没有起名字的必要,太麻烦

在创建匿名内部类时必须作为new语句的一部分来声明

用法:

接口/类 对象名=new 接口/类(){
//匿名内部类
}
 

 

 

标签:部类,内部,接口,类型,枚举,泛型
From: https://www.cnblogs.com/hoboshell/p/17227341.html

相关文章

  • Soildworks内部墙体形状以及体积模型建立和计算
    1、模型选择一个模型在模型的出口位置新建基准面2、选择插入>特征>相交 命令  3、选择外壳模型和出口基准面  4、点击相交,隐藏其他实体,点击评估计算体积质......
  • Java 集合(泛型 Stream)
    1.泛型JDK5开始出现了泛型的使用泛型符号可以应用在类,接口,方法的声明处,起到一个占位符的作用,先占个位置,给引用类型占个位置;泛型符号名称和个数无要求;TtypeE......
  • 泛型对象的应用:常规业务逻辑模板化,使用通用的父类来定义字段,具体字段由实现类来赋予数
    泛型对象的应用:常规业务逻辑模板化,使用通用的父类来定义字段,具体字段由实现类来赋予数据//DEMO-1publicinterfaceCommonTemplateService<T,F>{publicTbuildCa......
  • 每天进步一点点-枚举类
    #!/usr/bin/envpython#-*-coding:utf-8-*-#author:SunXiuWen#datetime:2019/11/18001814:04fromenumimportEnum,unique"""经验证和文档发现仅仅用于py3......
  • 枚举
    枚举将枚举变量要赋的值一一列举出来。例如enumCOLOR{RED,BLACK,GREEN,BLUE,YELLOW};修改枚举值 ......
  • Dart 枚举
    枚举最基本的使用enumCOLOR{RED,BLUE,YELLOW,GREEN,BLACK,GRAY,PINK,WHITE;}复杂点的枚举enumColor{WHITE(0xF8F8FF),PINK(0xFFC0CB),BLUE(0x0000FF......
  • 一种子集枚举方式的正确性说明
    一种常见的枚举子集的方法是for(intS=SET;S;S=(S-1)&SET)其中,变量\(\rm{S}\)是所枚举的子集考虑\(\rm{S}\)的二进制展开\[\mathrm{S}=(b_1b_2b_3\cdo......
  • 内部类解析
    一、什么是内部类?在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。一个内部类的例子:publiccl......
  • CFR 反编译 Java 枚举
    CFR到这里下载。运行如下命令使用当前文件夹下的cfr-0.152.jar反编译当前文件夹下的T.class。java-jarcfr-0.152.jarT.class--sugarenumsfalse其中--sugarenum......
  • JavaSE-day02(面向对象:内部类,枚举,泛型)
    一、内部类内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。当一个类的内部,包含一个完整的事物,且......