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

5分钟轻松拿下Java枚举

文章目录

  • 一、枚举(Enum)
    • 1.1 枚举概述
    • 1.2 定义枚举类型
      • 1.2.1 静态常量案例
      • 1.2.2 枚举案例
      • 1.2.3 枚举与switch
    • 1.3 枚举的用法
      • 1.3.1 枚举类的成员
      • 1.3.2 枚举类的构造方法
        • 1)枚举的无参构造方法
        • 2)枚举的有参构造方法
      • 1.3.3 枚举中的抽象方法
    • 1.4 Enum 类
      • 1.4.1 Enum类中的方法
      • 1.4.2 测试方法功能
      • 1.4.3 枚举的两个抽象方法

一、枚举(Enum)

1.1 枚举概述

枚举(enum),全称enumeration是JDK 1.5 中引入的新特性。Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

在JDK1.5 之前,我们定义常量都是: public static fianl。有了枚举之后,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

1.2 定义枚举类型

1.2.1 静态常量案例

我们使用静态常量来设置一个季节类:

package com.dfbz.demo01_静态成员变量;/*** @author lscl* @version 1.0* @intro:*/
public class Season {public static final Integer SPRING = 1;public static final Integer SUMMER = 2;public static final Integer AUTUMN = 3;public static final Integer WINTER = 4;
}

1/2/3/4分别代表不同的含义

测试类:

package com.dfbz.demo01_静态成员变量;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo01_静态成员变量 {@Testpublic void test1() {method(Season.SPRING);method(Season.WINTER);}public void method(Integer season) {switch (season) {case 1:System.out.println("Spring!");          // 具体的逻辑break;case 2:System.out.println("Summer!");           // 具体的逻辑break;case 3:System.out.println("Autumn!");          // 具体的逻辑break;case 4:System.out.println("Winter!");           // 具体的逻辑break;}}
}

1.2.2 枚举案例

Java 枚举类使用enum关键字来定义,各个常量使用逗号来分割。

package com.dfbz.demo02;/*** @author lscl* @version 1.0* @intro:*/
public enum Season {SPRING,SUMMER,AUTUMN,WINTER
}

Tips:定义枚举类的关键字是enum,而不是Enum,在Java中所有关键字都是小写的!

其中SPRINGSUMMERAUTUMNWINTER都是枚举项它们都是本类的实例,本类一共就只有四个实例对象。并且只能通过这四个关键字获取Season类的实例对象,不能使用new来创建枚举类的对象

package com.dfbz.demo02_枚举的使用;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo01_枚举的使用 {@Testpublic void test1() {// 通过枚举项来获取枚举实例Season spring = Season.SPRING;Season spring2 = Season.SPRING;// 通过相同的枚举项获取的枚举实例是一样的System.out.println(spring == spring2);          // true// 不同的枚举项获取的枚举实例是不一样的Season autumn = Season.AUTUMN;System.out.println(spring == autumn);           // false}
}

1.2.3 枚举与switch

使用枚举,能让我们的代码可读性更强。

package com.dfbz.demo02_枚举的使用;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo02_枚举与switch {@Testpublic void test1() {Season season = Season.AUTUMN;switch (season){case SPRING:System.out.println("春天~");break;case SUMMER:System.out.println("夏天!");break;case AUTUMN:System.out.println("秋天@");break;case WINTER:System.out.println("冬天&");break;default:System.out.println("错误的季节");}}
}

1.3 枚举的用法

1.3.1 枚举类的成员

枚举类和正常的类一样,可以有实例变量,实例方法,静态方法等等

  • 定义枚举类:
package com.dfbz.demo02_枚举的使用;/*** @author lscl* @version 1.0* @intro:*/
public enum Color {// 在枚举常量后面还有其他成员时,分号是必须的。枚举常量必须在枚举类中所有成员的上方声明RED, GREEN, BLUE;public String aaa = "AAA";              // 普通成员变量public static String bbb = "BBB";       // 静态成员变量private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public static void method() {System.out.println("enum hello~");}
}

Tips:当枚举项后面有其他成员(构造方法、成员变量、成员方法)时,最后一个枚举项必须加分号;

  • 测试类:
package com.dfbz.demo02_枚举的使用;/*** @author lscl* @version 1.0* @intro:*/
public class Demo03_枚举类的成员 {public static void main(String[] args) {// 访问静态成员变量System.out.println(Color.bbb);// 访问静态成员方法Color.method();// 通过枚举项获取实例Color red = Color.RED;// 通过枚举实例调用成员方法red.setName("红色");// 通过枚举实例调用成员方法System.out.println(red.getName());			// 红色}
}

1.3.2 枚举类的构造方法

1)枚举的无参构造方法

枚举类也可以有构造方法,构造方法默认都是private修饰,而且只能是private。因为枚举类的实例不能让外界来创建!

默认情况下,所有的枚举项的创建都是调用枚举类的无参构造方法,并且在获取任何一个枚举实例时,其他实例都将会被创建

package com.dfbz.demo03;/*** @author lscl* @version 1.0* @intro:*/
public enum Direction {// 在枚举常量后面还有其他成员时,分号是必须的。枚举常量必须在枚举类中所有成员的上方声明FRONT,BEHIND,LEFT,RIGHT;// 枚举类的构造方法都是private修饰的,可写可不写Direction(){System.out.println("Direction创建了...");}
}

Tips:

  • 1:当枚举项后面有其他成员(构造方法、成员变量、成员方法)时,最后一个枚举项必须加分号;
  • 2:所有的枚举类的构造方法都是私有的(private关键字可加可不加)

测试类:

package com.dfbz.demo02_枚举的使用;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo04_枚举类的构造方法 {/*** 枚举的无参构造方法*/@Testpublic void test1() {// 运行代码将会创建四个枚举实例Direction behind = Direction.BEHIND;}}

运行结果:

在这里插入图片描述

Tips:一旦创建了枚举实例,便会初始化里面的所有枚举项;创建枚举项就等同于调用本类的无参构造器,所以FRONT、BEHIND、LEFT、RIGHT四个枚举项等同于调用了四次无参构造器

2)枚举的有参构造方法

枚举项就是枚举类的实例,在创建定义枚举项时其实就是创建枚举类的实例,因此在定义枚举项就要传递实际的参数

  • 定义枚举项:
package com.dfbz.demo02_枚举的使用;/*** @author lscl* @version 1.0* @intro:*/
public enum  Week {// 枚举项就是枚举类的实例,在创建定义枚举项时其实就是创建枚举的实例,因此在定义枚举项就要传递实际的参数MONDAY("星期一",1),TUESDAY("星期二"),WEDNESDAY,THURSDAY("星期四",3),FRIDAY("星期五",4),SATURDAY("星期六",5),SUNDAY("星期六",4);private String name;private Integer loveLevel;// 注意: 枚举类的构造方法只能是私有(默认情况下也是私有)Week() {                                    // 空参构造}Week(String name) {                         // 有参构造this.name = name;}Week(String name, Integer loveLevel) {      // 有参构造this.name = name;this.loveLevel=loveLevel;}public void show() {System.out.println("我是【" + name + "】,我的喜好程度是【" + loveLevel + "】颗星");}@Overridepublic String toString() {return "Week{" +"name='" + name + '\'' +", loveLevel=" + loveLevel +'}';}
}
  • 测试类:
/*** 枚举的有参构造方法*/
@Test
public void test2() {// 获取第一个枚举实例时,将会创建所有的枚举实例Week friday = Week.FRIDAY;friday.show();System.out.println(friday);System.out.println("---------------");Week saturday = Week.SATURDAY;saturday.show();System.out.println(saturday);System.out.println("---------------");Week tuesday = Week.TUESDAY;tuesday.show();System.out.println(tuesday);System.out.println("---------------");Week wednesday = Week.WEDNESDAY;wednesday.show();System.out.println(wednesday);System.out.println("---------------");
}
  • 运行效果如下:

在这里插入图片描述

1.3.3 枚举中的抽象方法

枚举类中可以包含抽象方法,但是在定义枚举项时必须重写该枚举类中的所有抽象方法;

我们前面说过,每一个枚举项其实都是枚举类的实例对象,因此如果当前枚举类包含抽象方法时,在定义枚举项时就需要重写此枚举类的所有抽象方法,这跟我们以前使用的匿名内部类很相似;

  • 首先定义一个抽象类(包含了抽象方法):
package com.dfbz.demo03_枚举的抽象方法;/*** @author lscl* @version 1.0* @intro:*/
public abstract class AbstractSeason {public abstract void fun();
}
  • 实例化这个抽象类的时候,我们必须抽象其所有的抽象方法:
package com.dfbz.demo03_枚举的抽象方法;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo01_枚举的抽象方法 {@Testpublic void test1() {// 可以把abstractSeason看做是一个枚举项,在定义枚举项时必须重写枚举类的所有抽象方法AbstractSeason abstractSeason = new AbstractSeason() {@Overridepublic void fun() {System.out.println("重写了这个抽象类的所有抽象方法");}};}
}

当枚举类中含有抽象方法的时候,定义枚举项时,必须重写该枚举类中所有的抽象方法,像下面这种就是一种错误的定义:

package com.dfbz.demo03_枚举的抽象方法;/*** @author lscl* @version 1.0* @intro:*/
public enum Season {SPRING;         // 编译报错,定义枚举项时必须重写枚举类包含的所有抽象方法public abstract void fun();
}
  • 正确写法:
package com.dfbz.demo03_枚举的抽象方法;/*** @author lscl* @version 1.0* @intro:*/
public enum Season {SPRING(){@Overridepublic void fun() {System.out.println("我是春天~");}};        public abstract void fun();
}
  • 定义多几个枚举项:
package com.dfbz.demo03_枚举的抽象方法;/*** @author lscl* @version 1.0* @intro:*/
public enum Season {SPRING(){@Overridepublic void fun() {System.out.println("我是春天...");}},          SUMMER(){@Overridepublic void fun() {System.out.println("我是夏天~");}};          public abstract void fun();
}
  • 测试类:
@Test
public void test2() {Season spring = Season.SPRING;Season summer = Season.SUMMER;spring.fun();summer.fun();
}

在这里插入图片描述

1.4 Enum 类

1.4.1 Enum类中的方法

Java中,所有的枚举类都默认继承与java.lang.Enum类,这说明Enum中的方法所有枚举类都拥有。另外Enum也继承与Object,因此所有的枚举类都拥有与Object类一样的方法;


Enum类中的方法如下:

在这里插入图片描述

Tips:枚举类除了不能拥有Object中的clone、finalize方法外,其他方法都能拥有;

Enum类新增(或重写Object)的方法:

  • int compareTo(E e):比较两个枚举常量谁大谁小,其实比较的就是枚举常量在枚举类中声明的顺序(ordinal值)
  • boolean equals(Object o):比较两个枚举常量是否相等;
  • Class<E> getDeclaringClass():返回此枚举类的Class对象,这与Object中的getClass()类似;
  • int hashCode():返回枚举常量的hashCode
  • String name():返回枚举常量的名字;
  • int ordinal():返回枚举常量在枚举类中声明的序号,第一个枚举常量序号为0;
  • String toString():把枚举常量转换成字符串;
  • static T valueOf(Class enumType, String name):把字符串转换成枚举常量。

1.4.2 测试方法功能

  • 定义一个枚举类:
package com.dfbz.demo07;/*** @author lscl* @version 1.0* @intro:*/
public enum  Season {SPRING,SUMMER,AUTUMN,WINTER;
}
  • 测试类:
package com.dfbz.demo04_Enum;import org.junit.Test;/*** @author lscl* @version 1.0* @intro:*/
public class Demo01_Enum类的方法使用 {Season spring = Season.SPRING;              // ordinal:0Season summer = Season.SUMMER;              // ordinal:1Season autumn = Season.AUTUMN;              // ordinal:2Season winter = Season.WINTER;              // ordinal:3@Testpublic void test1() {System.out.println(spring.compareTo(spring));           // 0-0=0System.out.println(spring.compareTo(summer));           // 0-1=-1System.out.println(winter.compareTo(summer));           // 3-1=2System.out.println(winter.compareTo(spring));           // 3-0=3}@Testpublic void test2() {Season spring2 = Season.SPRING;System.out.println(spring == spring2);                  // trueSystem.out.println(spring.equals(spring2));             // 枚举对象的equals方法比较的是内存地址值(返回true)}@Testpublic void test3() {Class<Season> clazz = spring.getDeclaringClass();Class<? extends Season> clazz2 = spring.getClass();System.out.println(clazz == clazz2);            // true}@Testpublic void test4() {int hashCode = spring.hashCode();System.out.println(hashCode);           // 2027961269String name = spring.name();System.out.println(name);               // SPRINGint ordinal_spring = spring.ordinal();int ordinal_summer = summer.ordinal();int ordinal_autumn = autumn.ordinal();int ordinal_winter = winter.ordinal();System.out.println(ordinal_spring);         // 0System.out.println(ordinal_summer);         // 1System.out.println(ordinal_autumn);         // 2System.out.println(ordinal_winter);         // 3}@Testpublic void test5() {Season s = Season.valueOf("SPRING");        // 通过枚举项的名称获取枚举项System.out.println(s == spring);            // true(返回的还是同一个枚举项)}
}

1.4.3 枚举的两个抽象方法

每个枚举类都有两个静态方法,而且这两个方法不是父类中的方法。这又是枚举类特殊的地方;

  • static T[] values():返回本类所有枚举项;

  • static T valueOf(String name):通过枚举项的名字返回枚举项;


  • 测试类:
@Test
public void test6() {// 获取这个枚举类中所有的枚举项Season[] values = Season.values();for (Season value : values) {System.out.println(value);}// 通过枚举项的名称获取枚举项Season s = Season.valueOf("SPRING");System.out.println(s == spring);            // true
}

相关文章:

5分钟轻松拿下Java枚举

文章目录一、枚举(Enum)1.1 枚举概述1.2 定义枚举类型1.2.1 静态常量案例1.2.2 枚举案例1.2.3 枚举与switch1.3 枚举的用法1.3.1 枚举类的成员1.3.2 枚举类的构造方法1&#xff09;枚举的无参构造方法2&#xff09;枚举的有参构造方法1.3.3 枚举中的抽象方法1.4 Enum 类1.4.1 E…...

华为OD机试【独家】提供C语言题解 - 最小传递延迟

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明最小…...

【Web前端】关于JS数组方法的一些理解

一、具备栈特性的方法unshift(...items: T[]) : number将一个或多个元素添加到数组的开头&#xff0c;并返回该数组的新长度。shift(): T | undefined从数组中删除第一个元素&#xff0c;并返回该元素的值。此方法更改数组的长度。二、具备队列特性的方法push(...items: T[]): …...

多智能体集群协同控制笔记(1):线性无领航多智能体系统的一致性

对于连续时间高阶线性多智能体系统的状态方程为&#xff1a; x˙i(t)Axi(t)Bui(t),i1,2..N\dot {\mathbf{x}}_i(t)A\mathbf{x}_i(t)B\mathbf{u}_i(t),i1,2..N x˙i​(t)Axi​(t)Bui​(t),i1,2..N 下标iii代表第iii个智能体&#xff0c;ui(t)∈Rq1\mathbf{u}_i(t)\in R^{q \time…...

hadoop-Yarn资源调度器【尚硅谷】

大数据学习笔记 Yarn资源调度器 Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而MapReduce等运算程序则相当于运行与操作系统之上的应用程序。 &#xff08;也就是负责MapTask、ReduceTask等任…...

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

前言 不知道大家在开发的过程中&#xff0c;有没有遇到这种场景&#xff0c;外部的项目想访问内部nexus私仓的jar&#xff0c;因为私仓不对外开放&#xff0c;导致外部的项目没法下载到私仓的jar&#xff0c;导致项目因缺少jar而无法运行。 通常遇到这种场景&#xff0c;常用…...

Flume 使用小案例

案例一&#xff1a;采集文件内容上传到HDFS 1&#xff09;把Agent的配置保存到flume的conf目录下的 file-to-hdfs.conf 文件中 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1 # Describe/configure the source a1.sources.r1.type spoo…...

DLO-SLAM代码阅读

文章目录DLO-SLAM点评代码解析OdomNode代码结构主函数 main激光回调函数 icpCB初始化 initializeDLO重力对齐 gravityAlign点云预处理 preprocessPoints关键帧指标 computeMetrics设定关键帧阈值setAdaptiveParams初始化目标数据 initializeInputTarget设置源数据 setInputSour…...

X和Ku波段小尺寸无线电设计

卫星通信、雷达和信号情报(SIGINT)领域的许多航空航天和防务电子系统早就要求使用一部分或全部X和Ku频段。随着这些应用转向更加便携的平台&#xff0c;如无人机(UAV)和手持式无线电等&#xff0c;开发在X和Ku波段工作&#xff0c;同时仍然保持极高性能水平的新型小尺寸、低功耗…...

推荐算法 - 汇总

本文主要对推荐算法整体知识点做汇总&#xff0c;做到总体的理解&#xff1b;深入理解需要再看专业的材料。推荐算法的意义推荐根据用户兴趣和行为特点&#xff0c;向用户推荐所需的信息或商品&#xff0c;帮助用户在海量信息中快速发现真正所需的商品&#xff0c;提高用户黏性…...

Android 系统的启动流程

前言&#xff1a;从开机的那一刻&#xff0c;到开机完成后launcher将所有应用进行图标展示的这个过程&#xff0c;大概会有哪一些操作&#xff1f;执行了哪些代码&#xff1f;作为Android开发工程师的我们&#xff0c;有必要好好的梳理一遍。既然要梳理Android系统的启动流程&a…...

自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第二部分

我的学习心得&#xff0c;我认为能不能自学成功的要素有两点。 第一点就是自身的问题&#xff0c;虽然想要转行学习Java的人很多&#xff0c;但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习Java&#xff0c;这是完全不可能的。所以能不能学成Jav…...

Vue 3 第五章:reactive全家桶

文章目录1. reactive1.1. reactive函数创建一个响应式对象1.2. 修改reactive创建的响应式对象的属性2. readOnly2.1. 使用 readonly 函数创建一个只读的响应式对象2.2. 如何修改嵌套在只读响应式对象中的对象?3. shallowReactive3.1. 使用 shallowReactive 函数创建一个浅层响…...

【联机对战】微信小程序联机游戏开发流程详解

现有一个微信小程序叫中国象棋项目&#xff0c;棋盘类的单机游戏看着有缺少了什么&#xff0c;现在给补上了&#xff0c;加个联机对战的功能&#xff0c;增加了可玩性&#xff0c;对新手来说&#xff0c;实现联机游戏还是有难度的&#xff0c;那要怎么实现的呢&#xff0c;接下…...

优化基于axios接口管理的骚操作

优化基于axios接口管理的骚操作&#xff01; 本文针对中大型的后台项目的接口模块优化&#xff0c;在不影响项目正常运行的前提下&#xff0c;增量更新。 强化功能 1.接口文件写法简化&#xff08;接口模块半自动化生成&#xff09; 2.任务调度、Loading调度&#xff08;接口层…...

【Django功能开发】如何正确使用定时任务(启动、停止)

系列文章目录 【Django开发入门】ORM的增删改查和批量操作 【Django功能开发】编写自定义manage命令 文章目录系列文章目录前言一、django定时任务二、django-apscheduler基本使用1.安装django-apscheduler2.配置settings.py的INSTALLED_APPS3.通过命令生成定时记录表3.如何创…...

7个好用到爆的音频、配乐素材网站,BGM都在这里了

现在只要有一部手机&#xff0c;人人都能成为视频创作者。一个好的视频不能缺少的就是内容、配乐&#xff0c;越来越注重版权的当下&#xff0c;音效素材使用不当造成侵权的案例层出不穷。为了避免侵权&#xff0c;找素材让很多创作者很头疼。 今天我就整理了7个可以免费下载&…...

JUC(二)

1.可重入锁–ReentrantLock原理 1.1.非公平锁的实现原理 1.1.1.加锁解锁流程 1>.先从构造器开始看,默认为非公平锁,可以在构造函数中设置参数指定公平锁 public ReentrantLock() {sync = new NonfairSync(); }public ReentrantLock...

ATS认证教学

我用的版本是ATS7.11、系统版本是用最新的ios13.2.1 定义 ATS旨在分析通过UART、USB和蓝牙传输传输的iAP流量、通过USB和无线&#xff08;蓝牙和Wi-Fi&#xff09;传输的CarPlay流量、通过Wi-Fi传输的AirPlay 2流量以及闪电音频流量。 ATS是Apple’s Accessory Test System的…...

【操作系统】进程管理

进程与线程 1. 进程 进程是资源分配的基本单位 进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态&#xff0c;所谓的创建进程和撤销进程&#xff0c;都是指对 PCB 的操作。 下图显示了 4 个程序创建了 4 个进程&#xff0c;这 4 个进程可以并发地执行…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...