首页 > 其他分享 >什么是枚举类?

什么是枚举类?

时间:2024-07-15 08:58:14浏览次数:17  
标签:String 对象 什么 枚举 User 饿汉 public name

  • 特点:

    1. 用Enum关键字定义类

    2. 枚举默认继承了java.long.Enum而不是Object

    3. 枚举的默认构造方法只能用private修饰符,如果构造方法省略修饰符,则默认使用privatte修饰符.

    4. 枚举所有的对象(实例)必须在枚举中显示列出,否则这个枚举将永远不能创建实例对象.

    5. 枚举列出的对象,系统会自动添加public static final修饰符.

      final的作用是内存地址不变,枚举类中对象的变量值可以用过get/set方法修改。

  • 单例模式:一个类,只能有一个对象,且不能再创建新的对象.(饱汉式/饿汉式)

    • 第一种方法:(懒汉式)

      • 私有化构造方法

      • 提供一个公有的获取单例对象的静态方法

    • 第二种方法:(饿汉式)

      • 不管有无对象,先创建一个,且是最后一个

    • 第三种方法:(枚举)

    • 汉&饿汉User类
    • public class User{
          private String name;
          
          //懒汉式1 -->创建一个对象u
          private static User u;
          
          //饿汉式1 --->不管有无对象,先创建一个,且是最后一个对象(final修饰)
          private static final User u2 = new User("abc");
          
          //懒汉式1---> 私有化构造方法
          private User(String name){
          this.name = name;
          }
          
          //提供一个公有的获取单例对象的静态方法
          //通过一个静态方法来判断是否创建一个对象,如果没有创建过对象,则创建一个,否则则不创建对象,继续返回原来创建的对象
          public static User getInstance(){
              if(u == null){
                  u = new User("abc");
           }
           
           //饿汉式1 ---> 获取创建的对象   
           public static User getInstance(){
               return u2;
           }   
           
           //饿汉式1 ---> 获取饿汉式1的名字   
           public String getName(){
               return name;
           }   
           //饿汉式1 ---> 设置饿汉式1的名字     
           public void setName(String name){
               this.name = name;
           }   
             
           //懒汉式1  ---> 获取对象   
           public static User GetU(){
               return u;
           }   
           //懒汉式1  ---> 设置对象   
           public static void setU(User u){
               User.u = u;
           }         
         }    
      }
    • 枚举类:
      public enum MeEnum{
          //创建了对象alipay , wechat
          alipay("st001","alst001"),wechat("wc2","002");
          
          
          //定义变量,默认添加了private
          String account;
          String password;
          
          private MeEnum(String)
          
          
          
          //根据对象,创建了构造方法
          private MeEnum(String a, String b){
              account = a;
              password = b;
          }
          
          //获取account(账号),并返回String类型的account值
          public String getAccount(){
              return account;
          }
          
          //设置account的值
          public void setAccount(String account){
              this.account = account;
          }
          //获取String类型的password密码
          public String getPassword(){
              return password;
          }
          //设置String类型的密码
          public void setPassword(String password){
              this.password = password;
          }
      }
    • 调用类:
      public class Account{
          //调用枚举对象的变量值
          String act = MeEnum.alipay.getAccount();
          
          User u1 = User.getInstance();//调用饿汉式创建的对象
          System.out.println(u1.getName());//获取饿汉式对象的name
          
          //验证是否是单例模式 ----> 对象全都一致 ---> 为abc
          System.out.println(u1.getName());//获取饿汉式对象的name
          System.out.println(u1.getName());//获取饿汉式对象的name
          System.out.println(u1.getName());//获取饿汉式对象的name  
      }

标签:String,对象,什么,枚举,User,饿汉,public,name
From: https://blog.csdn.net/qq_65734626/article/details/140424158

相关文章

  • 财务自由之路Ⅰ——第一章:你真正想要的是什么
    财务自由之路Ⅰ——第一章:你真正想要的是什么整天工作的人是没有时间来赚钱的。你的行动应该应该以梦想、目标、价值观和策略这4根作为支柱,你的梦想和目标必须和你的价值观一致。梦想:如果你拥有无限的时间和金钱,你会做什么?价值观:对你来说真正重要的东西是什么?为什么这......
  • 分支预测,为什么使用 if/else 语句会降低程序效率
    在现代CPU架构中,分支预测是为了提高指令执行的效率。然而,如果if/else语句的分支走向难以预测,就可能会降低程序效率。这是因为当CPU执行到 if/else 语句时,它需要猜测接下来要执行的是if 分支还是else 分支。如果CPU的预测错误,就需要清空已经预取和执行的部分指令,重新......
  • .NET MAUI开源架构_2.什么是 .NET MAUI?
    1.什么是.NETMAUI?             .NET多平台应用UI(.NETMAUI)是一个跨平台框架,用于使用C#和XAML创建本机移动和桌面应用。使用.NETMAUI,可从单个共享代码库开发可在Android、iOS、macOS和Windows上运行的应用。         .NETMAUI是......
  • Spring:SpringBoot为什么可以使用Jar包启动
    SpringBoot之所以可以使用Jar包启动,主要得益于其内置的SpringBootMaven或Gradle插件,这些插件在打包过程中进行了一系列的特殊处理,使得打包出来的Jar文件不仅仅包含了应用的代码和资源,还包含了所有必需的依赖库(即所谓的“可执行的胖Jar”或“uber-jar”)。此外,Spr......
  • C#面:dot net core管道里面的map拓展有什么作用?
    在.NETCore管道中,Map拓展方法用于将中间件添加到请求处理管道中。它的作用是根据请求的路径或其他条件来选择性地执行中间件。具体来说,Map方法接受一个路径参数和一个委托参数。当请求的路径与指定的路径匹配时,该委托中的中间件将被执行。这使得我们可以根据不同的路径来应用......
  • C#面:Application builder的use和run方法有什么区别?
    这两个⽅法都在startupclass的configure⽅法⾥⾯调⽤。都是⽤来向应⽤请求管道⾥⾯添加中间件的。Use⽅法可以调⽤下⼀个中间件的添加,⽽run不会。在C#中,Applicationbuilder是用于构建和配置应用程序的类。它提供了一些方法来设置应用程序的各种属性和行为。其中,use和run方......
  • C语言 底层逻辑详细阐述指针(一)万字讲解 #指针是什么? #指针和指针类型 #指针的解引用 #
    文章目录前言序1:什么是内存?序2:地址是怎么产生的?一、指针是什么1、指针变量的创建及其意义:2、指针变量的大小二、指针的解引用 三、指针类型存在的意义四、野指针1、什么是野指针2、野指针的成因a、指针未初始化b、指针越界访问c、指针指向的空间释放3、如何......
  • 【转载】【内存】为什么手工drop_caches之后cache值并未减少?
    在Linux系统上查看内存使用状况最常用的命令是"free",其中buffers和cache通常被认为是可以回收的:$freetotalusedfreesharedbufferscachedMem:3276471610675483169716815833212593096-/+buffers/cache:47444032290276Swap:21......
  • 想知道海外技术面试都考些什么吗?
    周末即将结束,回顾一下你做了多少道题目,对于面试而言,多练习自然会有所收获,毕竟多练多会。如果你遇到了不清楚的题目,不妨来到文末进行咨询。接下来,我们再来看看别人的面试经历,看看是否有一些题目是你也遇到过的。游戏国际海外数据与发行技术团队一面自我介绍手撕算法:234、判......
  • 什么是RAID级别
    RAID级别是指独立磁盘冗余阵列的不同配置方式,它们决定了RAID系统的性能、可靠性、冗余能力。RAID通过将多个物理磁盘组合成一个逻辑单元,以提高数据存储的效率和安全性。根据不同的配置和算法,RAID技术被划分为不同的级别,每种级别都有其独特的特点和适用场景。RAID0(条带化)特点:......