什么是枚举类?

  • 特点:

    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  
      }
  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值